Есть ли элегантный способ получить только одно измерение из двумерного массива в JavaScript или angularjs? - PullRequest
0 голосов
/ 11 сентября 2018

Есть ли способ получить только одно измерение массива, не просматривая весь массив для их извлечения?

Чтобы доказать, что я действительно пытался решить свою проблему, прежде чем задавать вопрос на этом сайте, я попытался использовать фильтры и циклы для получения необходимых мне данных. Я выбрал для каждого варианта, который я ввел ниже.

Вот мои примерные данные:

dataArray = 
 [ 
 {id: 'ABCDEF', name: 'ABC DEF'},
 {id:'WINDY', name: 'Windy' },
 {id: 'RSTETC', name: 'RST ETC'},
 {id: 'MCHSDXCVDEULH', name: 'MCHS DXCVD EULH'}
 ]

Вот что я сделал, чтобы получить все значения имен в новом массиве:

if (dataArray.length) {
 var nameList =[];
 angular.forEach(dataArray, function(dep, idx) {
   nameList.push(dep.name);
 });
}

Ответы [ 4 ]

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

Карта была бы идеальным ответом на этот вопрос, за исключением того, что в моей конкретной ситуации мы должны были поддерживать версии IE, так что это не было приемлемым вариантом.Я должен был сохранить код так, как я его ввел, с циклом.(

0 голосов
/ 11 сентября 2018

Вы можете использовать Array#map().Он создает новый массив с результатами вызова предоставленной функции для каждого элемента в вызывающем массиве.

dataArray = [ 
 {id: 'ABCDEF', name: 'ABC DEF'},
 {id:'WINDY', name: 'Windy' },
 {id: 'RSTETC', name: 'RST ETC'},
 {id: 'MCHSDXCVDEULH', name: 'MCHS DXCVD EULH'}
];

console.log(
  dataArray.map(data => data.name)
)

Обратите внимание, что это все равно будет внутренним циклом в массиве, обходить это невозможно.

0 голосов
/ 11 сентября 2018

используйте map метод.В вашем случае это должно быть примерно так.

dataArray = dataArray.map(data => data.name);

0 голосов
/ 11 сентября 2018

Вы можете использовать .map(). Начиная с Документы :

Метод map() создает новый массив с результатами вызова предоставленной функции для каждого элемента в вызывающем массиве.

let data = [ 
 {id: 'ABCDEF', name: 'ABC DEF'}, {id:'WINDY', name: 'Windy' },
 {id: 'RSTETC', name: 'RST ETC'}, {id: 'MCHSDXCVDEULH', name: 'MCHS DXCVD EULH'}
];

let result = data.map(({ name }) => name);

console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...