在单个数组中复制数组中所有对象的单个字段

时间:2019-02-27 09:51:52

标签: javascript arrays object

我想优化代码以删除for-loop

    groupFieldNames = [];
    for (i = 0; i < data.length; i++) {
        groupFieldNames.push(data[i].groupFieldName);
    }

data是一个对象数组,每个对象都有4个字段。

enter image description here

我对标识为groupFieldName的那个感兴趣。

有没有一种方法可以避免循环并直接将字段推入数组?

编辑:

我接受@Yosvel Quintero的建议(对所有提出地图解决方案的人来说,他是第一个),并检查了性能。 使用具有约60k对象的数据数组,我得到了:

  • 使用map使用3毫秒;
  • 11毫秒使用for-loop

还不错。

4 个答案:

答案 0 :(得分:2)

您可以使用Array.prototype.map()

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)