Я хотел оптимизировать свой код, удалив for-loop.
groupFieldNames = [];
for (i = 0; i < data.length; i++) {
groupFieldNames.push(data[i].groupFieldName);
}
data — это массив объектов, каждый из которых имеет 4 поля.
Меня интересует тот, который обозначен как groupFieldName.
Есть ли способ избежать цикла и напрямую вставить поля в массив?
Обновлено:
Я согласился с предложением @Yosvel Quintero (всем ребятам, предложившим решение карты, он был первым), и проверил производительность. С массивом данных, имеющим ~ 60 тыс. объектов, у меня есть:
map;for-loopНеплохо.
Вместо этого вы можете использовать .map, но если вы ищете оптимальный эффективный код, мало что может превзойти цикл for...
Вы можете использовать map или forEach, как угодно, он будет повторяться, просто цикла в вашем коде не будет, но вы не сможете его избежать.
Не знаю ваших требований, но, возможно, вы можете сохранить полный объект, и везде, где вам нужно groupFieldName, просто используйте деструктуру объекта {groupFieldName} = obj; или в методах methodName({groupFieldName}){//}



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


Вы можете использовать Массив.прототип.карта()
const groupFieldNames = [];
for (i = 0; i < data.length; i++) {
groupFieldNames.push(data[i].groupFieldName);
}
К:
const groupFieldNames = data.map(o => o.groupFieldName);
Как отметил @sjahan, это все равно считается циклом, даже если вы его не видите. Я искал что-то вроде mem-copy или что-то в этом роде. Но я вижу элегантность в том, что вы предложили.
Здесь вы можете эффективно использовать встроенный .карта() Array следующим образом:
var data = [
{ id: 1, groupFieldName: 'abcd' },
{ id: 2, groupFieldName: 'pars' }
];
var groupFieldNames = data.map(obj => obj.groupFieldName)
console.info(groupFieldNames);Вы можете использовать map
var groupFieldNames = [];
var data=[{groupFieldName:'a'},{groupFieldName:'b'},{groupFieldName:'c'}]
console.info(data.map(x=>x.groupFieldName))Вы также можете использовать forEach
var groupFieldNames = [];
var data=[{groupFieldName:'a'},{groupFieldName:'b'},{groupFieldName:'c'}]
data.forEach(x=>groupFieldNames.push(x.groupFieldName))
console.info(groupFieldNames)Вы можете использовать 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.info(groupFieldNames);
Массив.прототип.карта()