ECMAScript 2015 представил несколько новых функций работы с массивами, которые помогают разработчикам работать с массивами.
Я рассмотрю некоторые из этих функций, представленных в JavaScript, а именно forEach
, map
и reduce
. Эти функции были введены для уменьшения общих проблем, с которыми разработчики сталкивались при изменении массивов. Наиболее распространенными проблемами были запись неэффективных итераций массива и изменение существующих массивов.
для каждого
Используйте forEach, если вы хотите выполнить итерацию по массиву и НЕ хотите изменить содержимое массива.
forEach получает функцию обратного вызова, и обязательным параметром функции является каждое значение в массиве.
const userNames = [ { firstName: 'Test1' }, { firstName: 'Test2' }, { firstName: 'Test3' } ]
userNames.forEach((user) => console.log(user.firstName))
// The console log will be: // Test1 // Test2 // Test3
карта
Используйте map, если вы хотите ИЗМЕНИТЬ значения массива. Map присвоит значения новому массиву, поэтому исходный массив не будет видоизменяться. ПОМНИТЕ: в JavaScript нельзя изменять массивы!
map получает функцию обратного вызова, и обязательным параметром функции является каждое значение в массиве. Обратный вызов должен вернуть новое значение, которое нужно присвоить этому значению массива.
const emails = [ 'invalid @test.com', '[email protected]', 'wro [email protected]' ]
const cleanEmails = emails.forEach((email) => { return email.replace(/\\s+/g,""); // Remove empty spaces })
console.log(cleanEmails)
// Console log: // [ // '[email protected]', // '[email protected]', // '[email protected]' // ]
уменьшать
Используйте reduce, если вы хотите изменить структуру данных массива, обертывающего значения, и сами значения.
reduce получает функцию обратного вызова. Обязательным параметром функции обратного вызова является аккумулятор (структура данных, которая будет содержать новые значения) и повторяемый элемент в массиве.
Цель этого примера — преобразовать структуру данных из массива в объект, а ключом объектов будет идентификатор.
const users = [ { id: 1, firstName: 'Ignacio', lastName: 'Ojanguren' }, { id: 2, firstName: 'Testing', lastName: 'Test' }, { id: 3, firstName: 'First', lastName: 'Name' }, ]
// newUser is the accumulator object // user is the value in the array const newObject = users.reduce((newUsers, user) => { return { ...newUsers, [user.id]: user } }, {});
console.log(newObject)
``` Console Log result { 1: { id: 1, firstName: “Ignacio”, lastName: “Ojanguren” }, 2: { id: 2, firstName: “Testing”, lastName: “Test” }, 3: { id: 3, firstName: “First”, lastName: “Name” } } ```
Для получения дополнительной информации об этих функциях обратитесь к оригинальной документации: forEach, map и reduce.