[ {name:'hi',data:'1,2,3,4,5'} , {name:'hello',data:'5,4,3,2,1'} ]
我需要的是对数组中每个对象的data
应用拆分,以便结果如下:
[ {name:'hi',data:[1,2,3,4,5]} , {name:'hello',data:[5,4,3,2,1]} ]
我知道我可以使用for each
遍历数组并生成一个新数组,但是有更好,更快的方法吗?
var arr = [{
name: 'hi',
data: '1,2,3,4,5'
}, {
name: 'hello',
data: '5,4,3,2,1'
}];
var new_arr = [];
for (i in arr) {
var temp = {};
temp.name = arr[i].name;
temp.data = arr[i].data.split(',');
new_arr.push(temp);
}
答案 0 :(得分:51)
您可以使用Array.prototype.map:
var new_array = old_array.map(function(e) {
e.data = e.data.split(',');
return e;
});
正如评论所说,这样改变了old_array
,你可以在回调函数中返回一个新对象而不改变原始数组。
答案 1 :(得分:17)
var data = [{
name: 'hi',
data: '1,2,3,4,5'
}, {
name: 'hello',
data: '5,4,3,2,1'
}];
你可以使用data
上的Array.prototype.map
来构建一个新数组,就像这样
var result = data.map(function (currentObject) {
return {
name: currentObject.name,
data: currentObject.data.split(",").map(Number)
};
});
在这里,我们split
currentObject.data
基于,
然后我们在所有拆分字符串上调用Number
函数,以便您获得结果对象的data
1}}作为数字,正如你在问题中想要的那样。
<强>输出强>
[{
name: 'hi',
data: [1, 2, 3, 4, 5]
}, {
name: 'hello',
data: [5, 4, 3, 2, 1]
}]