У меня есть массив, который показан из console.info (temp) вот так:
temp = [{name: "Request A", data: "1"}
{name: "Request B", data: "12"}
{name: "Request C", data: "6"}]
Как это сделать, если я хочу изменить формат моего массива, станет таким:
temp: [{name: "Request A", data: [1]}
{name: "Request B", data: [12]}
{name: "Request C", data: [6]}]
Пожалуйста, помогите ребята ... спасибо,
Если вы хотите изменить этот массив, то есть не создавать новый, используйте forEach: jsfiddle.net/awj0sq31
user2864740 это использование JavaScript man



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Используйте функцию map, которая вернет новый массив, и parseInt, чтобы преобразовать строку в число
let temp = [{
name: "Request A",
data: "1"
},
{
name: "Request B",
data: "12"
},
{
name: "Request C",
data: "6"
}
]
let newTemp = temp.map((item) => {
return {
name: item.name,
data: [parseInt(item.data, 10)]
}
});
console.info(newTemp)Я думаю, вы можете использовать здесь оператор распространения .... вернуть {... элемент, данные: [+ item.data]}
@CodeManiac абсолютно да
Чтобы изменить массив на месте, вы можете перебрать элементы для forEach и просто изменить свойство:
let temp = [ {name: "Request A", data: "1"},
{name: "Request B", data: "12"},
{name: "Request C", data: "6"}]
temp.forEach(item => item.data = [+(item.data)])
console.info(temp)Может быть, вы сможете улучшить с [+(item.data)], прочитав: унарный плюс - это самый быстрый и предпочтительный способ преобразования чего-либо в число, потому что он не выполняет никаких других операций с числом от здесь
Хотя это работает и дает результат, функциональное программирование с использованием forEach не предназначено для изменения исходного массива, а вместо этого вызывает побочные эффекты. map является предпочтительной функцией, поскольку она возвращает новый объект, оставляя исходный нетронутым.
@DrewReese, это хорошо, но вопрос конкретно спрашивает, как «изменить формат моего массива, чтобы он стал таким». Для меня это звучит как мутация.
Вы можете сделать это с помощью map
let temp = [{name: "Request A", data: "1"},{name: "Request B", data: "12"},{name: "Request C", data: "6"}]
let op = temp.map(e=> {
return {
...e,
data : [+e.data]
}
})
console.info(op)Зачем вам использовать mapи для замены массива на месте ??
Попробуй это,
temp = [{name: "Request A", data: "1"},
{name: "Request B", data: "12"},
{name: "Request C", data: "6"}];
let temp1 = temp.map(item => {
item.data = [parseInt(item.data)]
return item;
})
console.info(temp1);
ВЫВОД:
[ { "name": "Request A", "data": [ 1 ] }, { "name": "Request B", "data": [ 12 ] }, { "name": "Request C", "data": [ 6 ] } ]
Пытаться
temp.forEach(x=> x.data=[+x.data]);
let temp = [{name: "Request A", data: "1"},
{name: "Request B", data: "12"},
{name: "Request C", data: "6"}];
temp.forEach(x=> x.data=[+x.data]);
console.info(JSON.stringify(temp));Попробуй это - Я использую Array.of для создания массива. + оператор для синтаксического анализа строки в массив.
temp.map(t => (t.data = Array.of(+t.data), t));
Вот один из способов сделать это. Это из узла REPL.
> var temp = [{name: "Request A", data: "1"}, {name: "Request B", data: "12"}, {name: "Request C", data: "6"}];
undefined
> temp.forEach(function(e) {
..... e.data = [parseInt(e.data, 10)];
..... });
undefined
> temp
[ { name: 'Request A', data: [ 1 ] },
{ name: 'Request B', data: [ 12 ] },
{ name: 'Request C', data: [ 6 ] } ]
>
Это JavaScript или PHP? Удалите ненужные теги. Если вопрос касается «генерации JavaScript в результирующем выводе страницы PHP», это все еще PHP.