Скопировать одно поле всех объектов в массиве в один массив - PullRequest
0 голосов
/ 27 февраля 2019

Я хотел оптимизировать свой код, удалив for-loop.

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

data - массив объектов, каждый из которых имеет 4 поля.

enter image description here

Меня интересует тот, который обозначен как groupFieldName.

Есть ли способ избежать цикла и напрямую сдвинуть поля в массиве?

РЕДАКТИРОВАТЬ:

Я пошел с предложением @Yosvel Quintero (всем, кто предлагал картографическое решение, он был первым), и проверил производительность.С массивом данных, имеющим ~ 60 тыс. Объектов, я получил:

  • 3 мс, используя map;
  • 11 мс, используя for-loop

Неплохо.

Ответы [ 4 ]

0 голосов
/ 27 февраля 2019

Вы можете использовать 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);
0 голосов
/ 27 февраля 2019

Вы можете эффективно использовать встроенную в массив .map () здесь следующим образом -

var data = [
	{ id: 1, groupFieldName: 'abcd' },
	{ id: 2, groupFieldName: 'pars' }
];
var groupFieldNames = data.map(obj => obj.groupFieldName)
console.log(groupFieldNames);
0 голосов
/ 27 февраля 2019

Вы можете использовать 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)
0 голосов
/ 27 февраля 2019

Вы можете использовать Array.prototype.map ()

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

Кому:

const groupFieldNames = data.map(o => o.groupFieldName);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...