Выберите определенное свойство из массива объектов 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;});