Как получить значение из строки в Ja vaScript?
Я хочу получить определенное значение из строки JavaScript без использования таких методов, как indexOf
или же substr
, Есть ли какой-либо предопределенный способ сделать это?
Например, у меня есть строка,
var str = "a=1|b=2|c=3|d=4|e=5|f=6";
Я хочу получить значение c из приведенной выше строки, как я могу получить его напрямую?
7 ответов
Вы можете попробовать с:
str.split('|').find(value => value.startsWith('c=')).split('=')[1]
Вы также можете преобразовать его в объект с помощью:
const data = str.split('|').reduce((acc, val) => {
const [key, value] = val.split('=');
acc[key] = value;
return acc;
}, {});
data.c // 3
Использование регулярных выражений может решить эту проблему
const str = "a=1|b=2|c=3|d=4|e=5|f=6";
const matches = str.match(/c=([0-9]+)/);
console.log(matches[1]);
Ссылка: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match
В этом случае используйте split
:
var str = "a=1|b=2|c=3|d=4|e=5|f=6";
var parts = str.split('|');
var value = parts[2].split('=')[1];
console.log(value);
Или, может быть map
это, чтобы получить все значения для работы потом:
var str = "a=1|b=2|c=3|d=4|e=5|f=6";
var values = str.split('|').map(e => e.split('='));
console.log(values);
Вы можете превратить эту строку в ассоциативный массив или объект
var str = "a=1|b=2|c=3|d=4|e=5|f=6";
var obj = {}; //[] for array
str.split("|").map(o => {
var el = o.split("=");
obj[el[0]] = el[1];
})
console.log(obj.a)
console.log(obj.b)
console.log(obj.c)
Я предлагаю сначала разбить и отобразить в некоторой форме читаемой структуры данных. Поиск по строке уязвим для опечаток.
const mappedElements = str
.split('|')
.map(element => element.split('='))
.map(([key, value]) => ({ key: value }));
Метод фильтра массива может эффективно использовать память для такой операции.
var cOutput = str.split('|').filter( (val) => {
const [k,v] = val.split('=');
return k=='c' ? v : false }
)[0].split('=')[1];
Смотрите Array Filter
Попробуй это -
var str = "a=1|b=2|c=3|d=4|e=5|f=6";
str.split('|')[2].split('=')[1];