Примеры методов перебора массива в 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
// стандартное отклонение
Комментарии
0Нашли ошибку или хотите дополнить материал?