Введите ваш адрес почты


sdcvoy.ru
Понравился сайт? Поделись с друзьями!
Главная » Javascript » Massivy-perebirayushhie-metody

Массивы: перебирающие методы

Перебирающие методыВ современном JavaScript существуют, так называемые «перебирающие методы», которые применяются для перебора массивов. В этом уроке мы рассмотрим следующие методы:

forEach

Метод .forEach() используется для перебора массива. Он вызывает так называемую функцию callback, с помощью которой предаётся три параметра item, i, arr, где:

Чтобы проще было понять, как использовать данный метод рассмотрим пример:

var user=["admin","pass",31];
user.forEach(function(item,i,user){
alert("Значение элемента под № " + i + " : "  + item);
});

Этот метод может использоваться вместо обычного цикла for.

filter

Метод .filter() используется для фильтрации, он также использует функцию callback, но создаёт новый массив если элементы в массиве подходят под значение true:

var arr=[2,-34,66,-4,31];
var newArr=arr.filter(function(number){
return number < 0;
});
alert( newArr ); // выведет -34,-4

В данном примере проверяются числа на отрицательные значения, а на выходе выводится новый массив с этими значениями. Вы можете придумать свои условия, совсем необязательно это должны быть числа.

every/some

Эти два метода схожи друг с другом и оба используются для проверки массива, только метод .every() возвращает значение true если все значения в массиве подходят под заданное условие, а метод .some() возвращает true если хотя бы одно значение подходит под условие:

var arr=[2,-34,66,-4,31];
alert( arr.every(function(number){
return number < 0;
}) ); // выведет false

Надеюсь понятно, что если бы в примере выше использовался метод some то у нас бы вывелось значение true, вместо false.

map

Метод .map() трансформирует массив и получает из него новый. Всё делается посредством вызова callback-функции:

var arr=[2,-34,66,-4,31];
var newArr=arr.map(function(number){
return number*2;
});
alert( newArr ); 

В данном примере мы получили новый массив с удвоенными значениями элементов.

reduce/reduceRight

Последние методы, которые мы с вами рассмотрим это reduce и reduceRight. Используются они для обработки каждого элемента массива с сохранением промежуточного результата. Метод перебирает каждый элемент слева на право, reduceRight наоборот. В отличие от других методов кроме функции callback здесь ещё указывается аргумент initialValue — «начальное значение». Плюс ко всему в функции callback указывается «промежуточный результат» — previousValue и currentItem — текущий элемент массива.

Давайте рассмотрим пример:

function getSums(arr) {
  var result = [];
  if (!arr.length) return result;
  var totalSum = arr.reduceRight(function(sum, item) {
    result.push(sum);
    return sum + item;
  });
  result.push(totalSum);
  return result;
}
alert(getSums([5,4,3,2,1])); // 1,3,6,10,15  

Что произошло в данном примере? Мы создали функцию, которая позволяет получить новый массив с элементами, созданными из суммы предыдущих. Причем отчет элементов идет с конца. А вот более простой пример, в котором я создал функцию считающую сумму элементов в массиве:

function getSum(arr) {
var result = arr.reduce(function(sum, current) {
  return sum + current
});
return result;
};
alert(getSum([1,2,3,4]));


наверх