TL;DR: Список коротких и полезных JavaScript алгоритмов.
Перевод статьи Aurélien Hervé.
Отталкиваясь от моего опыта программирования на Ruby, во время изучения JavaScript, я был разочарован тем, что в языке упущены множество таких базовых методов как merge
,flatten
илиuniq
.
Затем я открыл для себя lodash и это было круто… До тех пор, пока я не понял, что вам стоит быть очень осторожным во время обновлений, потому что очень легко сломать что-то самым невероятным способом (это конечно произошло и со мной; представьте себе, как это прекрасно отлаживать ваш код, когда lodash изменил используемый вами метод и теперь он делает почти тоже самое, но не совсем так как должен был это делать. И как бонус вы не сразу понимаете, что причина в lodash)
Несколько лет спустя, вещи кажутся мне проще благодаря новому стандарту ES6 и теперь я реже использую lodash или любую другую библиотеку для базовых алгоритмов. Вот не полный список того что я использую при написании кода.
Оговорка: Я не претендую на то чтобы превзойти lodash по эффективности или сложности. Кроме того, lodash это невероятный проект. Мои примеры это лишь несложные, простые в написании куски кода, которые работают быстро для достаточно простых случаев. Нам не всегда нужны тяжелые орудия.
Весь код ниже уважает принципы неизменности. Мы никогда не изменяем первоначальный объект, вместо этого мы будем возвращать новый объект с необходимыми свойствами.
Надеюсь это также поможет вам!
Уникальный массив
Прежде чем переходить к массиву, помните, что у Set
есть такие полезные методы как size
или has
.
Обновление объекта в массиве по свойству
Мы обновим объект с id: 3
в массиве.
Удаление объекта из массива по свойству
Давайте удалим объект из массива, для которого id === 3
Удаления ключа из объекта
Мы можем использовать деструктуризацию в обратном направлении:
Объединение массива объектов
Следующим кодом мы можем с легкостью объединить вместе объекты или обновить их свойства:
Flatten
Преобразование многомерного массива в одномерный:
FromPairs
Преобразование массива в объект из пар ключ-значение
Вычитание из наборов
Удаление повторяющихся элементов из двух наборов (массивов)
Заключение
Вот и все на сегодня. Не стесняйтесь отправить мне больше примеров или попросите меня показать алгоритм, который я забыл! Я бы с радостью обновил этот список :)
Оригинал: https://hackernoon.com/basic-javascript-algorithms-toolbox-starter-kit-dc2af3ceebad