Выберите определенное свойство из массива объектов angular

у меня есть массив объектов, например, как один ниже.

[{ "foo" : "a", "bar" : "x", baz: 1},
{ "foo" : "b", "bar" : "y", baz: 2},
{ "foo" : "c", "bar" : "z", baz: 3}]

теперь я хочу выбрать только свойство foo из этого массива в другой массив, например

["a","b","c"]

Я могу сделать это, используя цикл и добавление каждого свойства в другой массив как

var fooArray =[];
angular.forEach(arrayName, function (value, key) {
    fooArray.push(value.foo);               
});

но это возможно так же, как мы делаем в C# linq select оператор без нас цикл в массиве, как

var fooArray = arrayName.Select(m => m.foo) // c# way

есть ли элегантный способ без зацикливания?

1 ответов


можно использовать map функции, как показано ниже. Это современный скрипт браузера, я имею в виду, что он будет отлично работать в IE8+ версий. Он не будет работать в IE8 старые версии.

согласно doc

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

и

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

var result = arrayName.map(function(a) {return a.foo;});