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
// стандартное отклонение



JavaScript up: просмотров: 78