В JavaScript часто встречается задача, когда требуется извлечь определенные значения свойств из массива объектов. Например, есть массив объектов следующего вида:
let objArray = [ { foo: 1, bar: 2}, { foo: 3, bar: 4}, { foo: 5, bar: 6} ];
Задача состоит в том, чтобы извлечь значения свойства foo
из каждого объекта и получить новый массив, в котором будут только эти значения. То есть, в результате должен получиться массив: [ 1, 3, 5 ]
.
Один из вариантов решения этой задачи — написать функцию, которая будет проходить по массиву объектов, и для каждого объекта извлекать значение нужного свойства. Затем эти значения добавляются в новый массив, который и возвращается как результат. Вот пример такой функции:
function getFields(input, field) { var output = []; for (var i=0; i < input.length ; ++i) output.push(input[i][field]); return output; } let result = getFields(objArray, "foo"); // возвращает [ 1, 3, 5 ]
Но в JavaScript есть более изящный и короткий способ сделать это, используя встроенный метод массивов map
. Этот метод проходит по всем элементам массива и применяет к ним функцию, которую вы передаете в качестве аргумента. Возвращаемые значения этой функции собираются в новый массив. Таким образом, можно извлечь значения свойства foo
следующим образом:
let result = objArray.map(function(item) { return item.foo; });
Или используя стрелочную функцию (это более современный и короткий синтаксис):
let result = objArray.map(item => item.foo);
И в обоих случаях в переменной result
будет массив [ 1, 3, 5 ]
. Это решение короче и проще для чтения, чем использование цикла for
, и оно является более предпочтительным способом решения такой задачи в JavaScript.
Добавить комментарий