Объяснение методов фильтрации, сопоставления и уменьшения массива JavaScript
Эй, друзья! 😎 Очень рад написать вторую статью о JavaScript после получения потрясающего ответа от таинственного «это в JavaScript». У меня уже есть множество тем в моих todos, чтобы написать о Web, JavaScript, CSS, HTML5 и Reactjs и планируется публиковать каждую неделю или две. Так что просто Подпишитесь на меня и всегда будьте в курсе всех предстоящих чтений. Итак, давайте начнем. 👍
Что такое массив в JavaScript?
В отличие от других языков, JavaScript немного продвинулся в плане массивов. В JavaScript у нас могут быть массивы разнородных типов, что означает, что мы можем хранить многотипные данные в одном массиве Объект.
//Homogeneous let fruits = [‘Apple’,’Orange’,’Mango’]; //heterogeneous let data = [ true, ‘1’, 27, [9,8,7], {name:’Ahmed Murtaza’} ];
Помимо использования массива для простого хранения данных и их обхода, а также циклического выполнения всех ваших скриптов, есть несколько впечатляющих встроенных методов, которые делают массивы очень удобными в различных ситуациях с большими преимуществами. Сегодня мы собираемся обсудить некоторые из этих самых популярных и очень удобных функций.
Фильтр()
Существует очень распространенный сценарий, когда нам нужно отфильтровать массив, чтобы выбрать определенные значения, но обычно мы используем циклы.
var original = [2,4,6,8,10]; var result = []; for(var i=0;i<original .length;i++){ if(original [i] % 3 === 0){ result.push(original [i]); } } console.log(result); //filtered output
Учитывая приведенный выше пример, мы не только ввели дополнительную переменную для цикла, но и для цикла довольно дорого с точки зрения производительности по сравнению с методом фильтра. Давайте попробуем теперь, как мы можем воспроизвести это, используя метод filter():
let original = [2,4,6,8,10]; //ES5 let result = original.filter(function(value){ return value % 3 === 0; }) //ES6 result = original.filter(value => value % 3 ===0);
Карта()
Карта больше всего знакома разработчикам React, но она определенно не специфична для реакции. На самом деле он проходит по всем индексам массива и возвращает новый массив. Это также соответствует одному из основных правил неизменности функционального программирования, поскольку не влияет напрямую на исходный массив и возвращает новый массив с примененными изменениями.
Старая практика
var ones = [1,2,3,4,5,6,7,8,9]; var twos = []; for(var i=0;i<ones.length;i++){ twos.push(ones[i]*2); }
Новый подход
const ones = [1,2,3,4,5,6,7,8,9]; const twos = ones.map(value => value * 2); console.log(ones); //[1,2,3,4,5,6,7,8,9]; console.log(twos); //[2,4,6,8,10,12,14,16,18];
Уменьшать()
Сокращение по его имени дает представление о сокращении чего-либо из заданного массива. Он имеет невероятно полезное определение функции, где у вас есть доступ к аккумулятору, а также к следующему значению индекса на каждой итерации. Под аккумулятором я подразумеваю результат предыдущей итерации.
const values = [2,4,6,8,10]; const output = values.reduce(function(acc, ele){ return acc + ele; }); //output 30
Уникальная часть заключается в том, что на каждой итерации мы получаем доступ к результату предыдущей итерации, благодаря чему этот метод reduce становится чрезвычайно полезным в различных сценариях.
const values = [2,4,6,8,10]; const calculateMax = (acc,ele) => { return Math.max(acc, ele); } const calculateMin = (acc,ele) => { return Math.min(acc, ele); } console.log(values.reduce(calculateMax)); //10 console.log(values.reduce(calculateMin)); //2
До сих пор мы рассмотрели все три метода, которые не только очень популярны в мире JavaScript, но и чрезвычайно важны. Эти методы также известны как Функции высшего порядка, которые принимают функцию в качестве параметра и возвращают ее измененную копию функции. В ближайшие недели я подробно расскажу вам и о функциях высшего порядка.
На этом пока все 😉, хотелось бы услышать ваши мысли и предложения ниже 👇. Оставайтесь с нами для более предстоящих чтений для вас. 👋