我想优化代码以删除for-loop
。
groupFieldNames = [];
for (i = 0; i < data.length; i++) {
groupFieldNames.push(data[i].groupFieldName);
}
data
是一个对象数组,每个对象都有4个字段。
我对标识为groupFieldName
的那个感兴趣。
有没有一种方法可以避免循环并直接将字段推入数组?
编辑:
我接受@Yosvel Quintero的建议(对所有提出地图解决方案的人来说,他是第一个),并检查了性能。 使用具有约60k对象的数据数组,我得到了:
map
使用3毫秒; for-loop
还不错。
答案 0 :(得分:2)
const groupFieldNames = [];
for (i = 0; i < data.length; i++) {
groupFieldNames.push(data[i].groupFieldName);
}
收件人:
const groupFieldNames = data.map(o => o.groupFieldName);
答案 1 :(得分:1)
您可以按以下方式有效使用Array内置的 .map() -
var data = [
{ id: 1, groupFieldName: 'abcd' },
{ id: 2, groupFieldName: 'pars' }
];
var groupFieldNames = data.map(obj => obj.groupFieldName)
console.log(groupFieldNames);
答案 2 :(得分:1)
您可以通过以下方式将Array.prototype.map()
与Destructuring assignment
结合使用:
const data = [
{id: 66, groupFieldName: 'test', other: 'other'},
{id: 66, groupFieldName: 'test2', other: 'other2'}
];
const groupFieldNames = data.map(({groupFieldName}) => groupFieldName);
console.log(groupFieldNames);
答案 3 :(得分:0)
您可以使用map
var groupFieldNames = [];
var data=[{groupFieldName:'a'},{groupFieldName:'b'},{groupFieldName:'c'}]
console.log(data.map(x=>x.groupFieldName))
您也可以使用forEach
var groupFieldNames = [];
var data=[{groupFieldName:'a'},{groupFieldName:'b'},{groupFieldName:'c'}]
data.forEach(x=>groupFieldNames.push(x.groupFieldName))
console.log(groupFieldNames)