Comments 29
Понимаю, что перевод, но всё-таки переменную в for...of
лучше сделать локальной.
Вот так:
const toolBox = ['Hammer', 'Screwdriver', 'Ruler'];
for (let item of toolBox) {
console.log(item);
}
И это в блоге компании занимающейся VDS/VPS…
все это можно в интернете найти на английском языкеИ искать не надо, здесь все есть, на русском, подробно и с более удачными примерами, так же указана совместимоть методов с версиями браузеров.
И это в блоге компании занимающейся VDS/VPS…Видимо имеют в виду: Покупайте сервер, и разворачивайте сайт на node.js
Код картинками это очень красиво и стильно!
Метод reduce(), в его простейшем виде, позволяет суммировать элементы числовых массивов. Другими словами, он сводит массив к единственному значению.
В простейшем виде он именно что сводит массив к единственному значению, про суммирование — в лучшем случае распространенный пример.
Кстати, это "единственное значение" вполне может быть другим массивом, что позволяет делать filter + map за один проход без мудреных концепций типа Y-комбинаторов и т.п.
age.some(person => person >= 18);
Понятно, что консоль выведет результат вычисления (просто консоль так задумана).
Но это ведь не явно. Глядя на код — это мертвая строчка, которая просто будет жрать ресурсы. А как именно использовать этот метод не ясно.
const age = [16, 17, 18];
const adultPresent = age.some(person => person >= 18);
console.log(adultPresent);
или
const age = [16, 17, 18];
const adultPresent = age.some(person => {
if (person >= 18) {
console.log(true);
return true;
}
});
console.log(...)
не делает код ничуть понятнее, а только захламляет его.ИМХО нужно было показать в таком стиле:
let a = [{a: 1}, {b: 2}]
console.log(...a)
// -> {a: 1} {b: 2}
console.log(a.join(' '))
// -> [object Object] [object Object]
Если авторы оригинала хотели удивить читателей удобным синтаксисом и возможностями ES6, то они года на три опоздали.
Прошу прощения, что придираюсь (да и это перевод, не здесь надо делать замечания), но хотелось бы хотя бы в комментарии добавить про forEach (а то про for..of написано, про map написано, а про forEach — нет). Плюс стоит упомянуть про reduceRight (хотя бы через слэш после reduce). И в одном из примеров по моему мнению не хватает второго необязательного аргумента для reduce, который задаёт начальное состояние результирующей переменной (часто использую).
А на сколько map быстрее перебора foreach? У меня нарисовалась задача по перебору массива и добавлению новый в ~300 000 элементов на клиенте и с использованием невыносимо долго около 2 — 3 минут…
for(let i = 0; i < yourArray.length; i++) {}
Это — самый быстрый вариант цикла:
jsperf.com/fast-array-foreach
С тех пор (тест 2012-го года, но можно найти и тесты недельной давности — результат будет схожим) хоть и обещали оптимизировать forEach/map в V8-движке, но до сих пор весомых результатов так и не добились.
forEach/map — это удобно, но при их использовании приходится жертвовать производительностью. Сейчас с нынешними возможностями ПК и мобильных устройств это зачастую не критично, но на больших объёмах данных, где падение скорости выполнения цикла в 6 раз — критичный момент (вместо, например, 2-х секунд выполнения процесс обработки займёт 12), стоит пренебречь удобством в пользу скорости выполнения. То же касается и остальных функций, представленных в статье выше.
Спасибо, попробую на for перевести цикл… Вообще удивительно конечно. У нас в проекте встречаются таблицы для заполнения размером 20 х 50, 200 х 200, разок было 2000 х 20, работало относительно нормально (крайний случай проглатывался на слабых компьютерах за одну минуту). Новая форма 250 х 2000 и у отдельных пользователей все встаёт раком (по другому и не сказать) до 20 минут с многократными предупреждениями о долгом исполнении в результате данные "бьются".
По уму это будет прекрасно работать на vue когда новый набор (строка) будет писаться в виде нового массива данных во внутрь большего набора по факту новой строки, а большой массив уже прекрасно пройдёт сериализацию для отправки на сервер
for(let len = yourArray.length, i = 0; i < len; ++i) {}
:)
Всем этим очень аккуратно нужно пользоваться, если подразумевается хоть какая-то поддержка IE. Надо бы хотя бы вскользь упомянуть, что как минимум includes() и of() в нем не поддерживается.
Аккуратно нужно пользоваться reduce, потому что это рекурсия в чистом виде и в памяти сохраняются все аргументы массива и возвращаемые значения, при работе с большим набором данных эта функция может не слабо подвесить систему
так бы не сильно от старого отличался)
age.some(person =>
person >= 18
);
Полезные приёмы работы с массивами в JavaScript