От автора: узнайте, как заменить циклы и использовать функции высшего порядка, такие как map, Reduce и Filter.
Почему мы заменяем циклы?
Использование функций высшего порядка сделает ваш код:
Более читабельный.
Понятным.
Отлаживаемым.
1. Перебрать все элементы и получить новый модифицированный массив
Используя цикл:
var names = ["Jack", "Jecci", "Ram", "Tom"];var upperCaseNames = []; for(let i=0, totalNames = names.length; i< totalNames ; i= i +1) { upperCaseNames[i] = names[i].toUpperCase(); }
Без цикла:
var names = ["Jack", "Jecci", "Ram", "Tom"]; var upperCaseNames = names.map(name => name.toUpperCase());
Примечание: если вы используете map, вы не можете ввести break или continue или return во время цикла. Для этого случая вы должны использовать every или some.
2. Перебрать все элементы и выполнить действие
Используя циклы:
function print(name) { console.log(name); } var names = ["Jack", "Jecci", "Ram", "Tom"]; for(let i=0, totalNames = names.length; i< totalNames ; i= i +1) { print(names[i]) }
без цикла
var names = ["Jack", "Jecci", "Ram", "Tom"]; names.forEach(name=> print(name));
3. Фильтрация массива
Используя стандартный цикл for:
function isOdd(n) { return n %2; } var numbers = [1,2,3,4,5]; var odd = []; for(let i=0, total = numbers.length; i< total ; i= i +1) { let number = numbers[i]; if( isOdd(number) ) { odd.push(number); } }
Использование filter:
var numbers = [1,2,3,4,5, 6, 7] var odd = numbers.filter(n => n%2); // single line
4. Создание вывода с элементами массива
Сумма чисел:
var numbers = [1,2,3,4,5] var result = 0; for(let i=0, total = numbers.length; i< total ; i= i +1) { result = result + numbers[i]; }
Использование reduce:
var numbers = [1,2,3,4,5,6,7]; function sum(accumulator, currentValue){ return accumulator + currentValue; } var initialVal = 0; var result = numbers.reduce(sum, initialVal);
Приведенный выше код может быть еще более упрощенным:
var numbers = [1,2,3,4,5,6,7, 10]; var result = numbers.reduce((acc, val)=> acc+val, 0);
5. Проверка, содержит ли массив значение
var names = ["ram", "raj", "rahul"]; for(let i=0, totalNames = names.length; i< totalNames ; i= i +1) { if(names[i] === "rahul") { console.log("%c found rahul", "color:red"); return; } }
Использование some:
var names = ["ram", "raj", "rahul"]; let isRahulPresent = names.some(name => name==="rahul");if(isRahulPresent) { console.log("%c found rahul", "color:red"); }
%c в операторе console применяет стиль к тексту консоли.
6. Проверить, соответствует ли каждый элемент в массиве условию
Используя цикл for:
var num = [1,2,3,4,5, 0]; for(let i=0, total = numbers.length; i< total ; i= i +1) { if(num <= 0) { console.log("0 present in array"); } }
Использование every:
var num = [1,2,3,4,5, 0]; var isZeroFree = num.every(e => e > 0); if(!isZeroFree) { console.log("0 present in array"); }
Спасибо за прочтение. Надеюсь, вам это нравится.
Источник: https://medium.com
Редакция: Команда webformyself.