JavaScript: Перебор массива в js
Примеры методов перебора массива в JavaScript.
// данные для примера let lostNumbers = [ 4, 8, 15, 16, 23, 42 ];
forEach
Перебор элементов массива.
# Пример
lostNumbers.forEach(function( value, index, arr ) { console.log( index +' => '+ value ); let prev = arr[ index - 1 ] || ''; let next = arr[ index + 1 ] || ''; if( prev ) console.log( 'Пред. знач. = '+ prev ); if( next ) console.log( 'След. знач. = '+ next ); console.log( ' ' ); });
filter
Фильтрация элементов массива.
Создаёт новый массив с отфильтрованными значениями.
# Пример
function isGreaterThan( limit ) { return value => value > limit; } let isGreaterThan3 = isGreaterThan( 3 ); let isGreaterThan15 = isGreaterThan( 15 ); let numbersGt3 = lostNumbers.filter( isGreaterThan3 ); console.log( numbersGt3 ); // [4, 8, 15, 16, 23, 42] let numbersGt15 = [ 4, 8, 15, 16, 23, 42 ].filter( isGreaterThan15 ); console.log( numbersGt15 ); // [16, 23, 42]
map
Преобразование массива.
Создаёт новый массив применяя функцию ко всем элементам массива.
# Пример
let parity = lostNumbers.map(function( element ) { return element%2; }); console.log( parity ); // [0, 0, 1, 0, 1, 0] function modify( value ) { return [ String( value ) + '^2 = ', Math.pow( value, 2 ) ]; } let modified = lostNumbers.map( modify ); console.log( modified ); // [ // ['4^2 = ', 16], // ['8^2 = ', 64], // ['15^2 = ', 225], // ['16^2 = ', 256], // ['23^2 = ', 529], // ['42^2 = ', 1764] // ]
every, some
Проверка элементов массива.
every возвращает true, если вызов callback вернёт true для каждого элемента массива.
some возвращает true, если вызов callback вернёт true для какого-нибудь элемента массива.
# Пример
let isEven = value => value%2 == 0; console.log( lostNumbers.every( isEven ) ); // false // не все числа чётные console.log( lostNumbers.every( isGreaterThan3 ) ); // true // все числа больше 3 console.log( lostNumbers.some( isEven ) ); // true // есть хотя бы 1 чётное число console.log( lostNumbers.some( isGreaterThan15 ) ); // true // есть хотя бы одно число больше 15
reduce, reduceRight
Обход массива с вычислением одного результирующего значения. Сохраняет промежуточный результат при обходе.
Аргументы функции callback:
prev – промежуточный результат,
value – текущий элемент массива,
index – индекс текущего элемента,
arr – обрабатываемый массив.
reduce обходит массив слева-направо, reduceRight обходит массив справа-налево.
# Пример
let sum = ( prev, value, index, arr ) => prev + value; console.log( lostNumbers.reduce( sum ) ); // 108 let count = lostNumbers.length; let average = lostNumbers.reduce( sum ) / count; console.log( average ); // 18 let dispersion = lostNumbers.map(function( value ){ return Math.pow( ( value - average ), 2 ) }).reduce(function( prev, value ){ return prev + value }) / count; console.log( dispersion.toFixed(3) ); // 151.667 // дисперсия let standardDeviation = Math.sqrt( dispersion ); console.log( standardDeviation.toFixed(3) ); // 12.315 // стандартное отклонение
Комментарии