У вас включен AdBlock или иной блокировщик рекламы.

Пожалуйста, отключите его, доход от рекламы помогает развитию сайта и появлению новых статей.

Спасибо за понимание.

В другой раз
DevGang блог о програмировании
Авторизоваться

Расширенные манипуляции с массивами в JavaScript 

Когда мы начинаем программировать, мы склонны создавать нашу собственную функцию с нашим собственным циклом для манипулирования массивами.

В действительности почти все языки ООП, включая JavaScript, предоставляют нам методы для достижения этой цели.

Если вы начнете с JavaScript, эта статья должна быть действительно полезной, для других она будет отличным напоминанием

Every

Every метод позволяет нам проверить, все ли элементы массива удовлетворяют условие.
Этот метод возвращает true, если все элементы соответствуют условию, в противном случае - false.
Условие является функцией.

Например, в следующем примере будет проверено, является ли каждый «человек» в нашем массиве взрослым:

// Условие должно возвращать логическое значение
function condition (human) {
   return human.age >= 18
}

var arr = [
    { name: 'Thomas', age: 19 },
    { name: 'Tim', age: 17 },
    { name: 'Luc', age: 20 }
];

console.log(arr.every(condition))
// Должен вывести true

Однако метод some() возвращает true, если хотя бы один элемент удовлетворяет условию.

Filter

Метод filter создает и возвращает новый массив со всеми элементами, которые удовлетворяют условию.

В следующем примере возвращается массив, состоящий исключительно из взрослых:

function condition (human) {
   return human.age >= 18
}

var arr = [
   { name: 'Thomas', age: 19 },
   { name: 'Tim', age: 17 },
   { name: 'Luc', age: 20}
]

console.log(arr.filter(condition))

Find

Метод find() возвращает первый элемент в массиве, удовлетворяющий условию. В противном случае, если ни один элемент не найден, find() возвращает «undefined».

Этот пример возвращает первого взрослого:

function condition (human) {
   return human.age >= 18
}

var arr = [
   { name: 'Thomas', age: 19 },
   { name: 'Tim', age: 17 },
   { name: 'Luc', age: 20}
]

console.log(arr.find(condition))

Map

Метод map создает новый массив с возвращаемым значением функции, выполняемой для каждого элемента вызывающего массива.

Этот пример увеличивает возраст каждого человека:

var arr = [
   { name: 'Thomas', age: 19 },
   { name: 'Tim', age: 17 },
   { name: 'Luc', age: 20}
]

console.log(arr.map(function(element){
   element.age += 1    
   return element
}))

Reduce

И последнее, но не менее важное: метод reduce() для меня самый сложный.

Метод Reduce сводит массив к одному значению, выполняя предоставленную функцию для каждого значения массива. 

Для каждого элемента возвращаемое значение сохраняется в «аккумуляторе», который можно использовать на всех итерациях.

Последнее возвращаемое значение метода reduce() - это аккумулятор. Аккумулятор должен быть инициализирован в вызове метода

Кроме того, функция Reduce может принимать два других параметра:

  • Текущий индекс
  • Исходный массив

Этот пример возвращает сумму возрастов:

function reducer (accumulator, element) {
   return accumulator + element.age
}

var arr = [
   { name: 'Thomas', age: 19 },
   { name: 'Tim', age: 17 },
   { name: 'Luc', age: 20}
]

console.log(arr.reduce(reducer,0))

Предыдущий пример очень прост, но метод reduce() действительно мощный, с ним можно многого добиться.

В заключение

Спасибо, что читаете меня, если у вас есть какие-либо вопросы, задавайте их!

#JavaScript