Вы знаете, как реализованы эти 20 методов массива?

Предисловие

Друзья мои, вы должны быть хорошо знакомы с массивами в JavaScript, мы каждый день используем его различные методы, такие как push, pop, forEach, map... и т.д.

Но достаточно ли просто использовать его? Настолько превосходно, что вы не должны останавливаться на достигнутом. Я хочу бросить вам вызов, чтобы реализовать функцию более 20 методов массива.

1. для каждого

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

Код

Протестируйте

Вау, поздравляю! Мы реализовали функцию forEach.

2. карта

Для чего вы обычно используете map? В большинстве случаев это преобразование одного массива в другой массив.

Код

Протестируйте

Друзья, как вы думаете, это не сложно? Это потому что ты такой хороший.

3. каждый

(Из MDN) Метод every() проверяет, все ли элементы в массиве проходят тест, реализованный предоставленной функцией. Он возвращает логическое значение.

В методе every есть три момента, которые вы, возможно, раньше не замечали, какие они?

  1. Вызов метода every для пустого массива вернет true.
  2. Метод callback будет вызываться только по индексу, которому уже присвоено значение.
  3. callback не будет вызываться, если значение будет удалено

Код

Протестируйте

4. некоторые

(из MDN) Метод some() проверяет, проходит ли хотя бы один элемент в массиве проверку, реализованную предоставленной функцией.

Код

Протестируйте

5. фильтр

(из MDN) Метод filter() создает новый массив со всеми элементами, прошедшими проверку, реализованную предоставленной функцией.

Протестируйте

6. уменьшить

Эта функция немного сложнее. Давайте рассмотрим пример, чтобы увидеть, как он используется.

Код

Протестируйте

7. уменьшитьПраво

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

Он очень похож на reduce, за исключением того, что reduceRight проходит справа налево.

Код

Протестируйте

8. найти

(Из MDN) Метод find() возвращает первый элемент в предоставленном массиве, который удовлетворяет предоставленной функции тестирования. Если никакие значения не удовлетворяют функции тестирования, возвращается значение undefined.

Код

Протестируйте

9. найтииндекс

(Из MDN) Метод findIndex() возвращает индекс первого элемента в массиве, который удовлетворяет предоставленной функции проверки. В противном случае возвращается -1, что указывает на то, что ни один элемент не прошел проверку.

Код

Протестируйте

10. indexOf

(Из MDN) Метод indexOf() возвращает первый индекс, по которому данный элемент может быть найден в массиве, или -1, если он отсутствует.

Примечания:

  1. Если значение индекса, с которого начинается поиск, больше или равно длине массива, это означает, что поиск в массиве производиться не будет, и возвращает -1.
  2. Если fromIndex является отрицательным числом, то он будет искаться по правилу: -1 означает начать поиск с последнего элемента, -2 означает начать поиск с предпоследнего элемента и так далее.
  3. Если fromIndex является отрицательным числом, массив все равно просматривается спереди назад.

Код

Протестируйте

11. последний индекс

(Из MDN) Метод lastIndexOf() возвращает последний индекс, по которому данный элемент может быть найден в массиве, или -1, если он отсутствует. Массив просматривается в обратном направлении, начиная с fromIndex.

Он очень похож на indexOf, за исключением того, что lastIndexOf проходит справа налево.

Код

Протестируйте

12. включает

(Из MDN)Метод include() определяет, содержит ли массив определенное значение среди своих записей, возвращая true или false в зависимости от ситуации.

Примечания

  1. Метод include будет искать valueToFind, начиная с индекса fromIndex.
  2. Если значение fromIndex отрицательное, поиск начинается с индекса array.length + fromIndex.
  3. Если в массиве существует NaN, [..., NaN] включает (NaN) истинно.

Код

Протестируйте

13. толкать

(Из MDN) Метод push() добавляет один или несколько элементов в конец массива и возвращает новую длину массива.

Код

Протестируйте

14. поп

(Из MDN) Метод pop() удаляет последний элемент из массива и возвращает этот элемент. Этот метод изменяет длину массива.

Код

Протестируйте

15. переключить

(Из MDN) Метод unshift() добавляет один или несколько элементов в начало массива и возвращает новую длину массива.

Примечания

Если вы передадите несколько параметров для вызова unshift один раз, вы получите другие результаты, чем если бы вы передали параметр для вызова unshift несколько раз (например, циклический вызов).

Код

Протестируйте

16. сдвиг

(Из MDN) Метод shift() удаляет первый элемент из массива и возвращает этот удаленный элемент. Этот метод изменяет длину массива.

Код

Протестируйте

17. реверс

(Из MDN) Метод reverse() переворачивает массив на месте. Первый элемент массива становится последним, а последний элемент массива становится первым.

Код

Протестируйте

18. заполнить

(Из MDN) Метод fill() изменяет все элементы в массиве на статическое значение, с начального индекса (по умолчанию 0) на конечный индекс (по умолчанию array.length). Он возвращает измененный массив.

Код

Протестируйте

19. конкат

(Из MDN) Метод concat() используется для объединения двух или более массивов. Этот метод не изменяет существующие массивы, а вместо этого возвращает новый массив.

Код

Протестируйте

20. присоединиться

(Из MDN) Метод join() создает и возвращает новую строку путем объединения всех элементов массива (или объекта, подобного массиву), разделенных запятыми или заданной строкой-разделителем. Если в массиве только один элемент, то этот элемент будет возвращен без использования разделителя.

Код

Протестируйте

Окончательно

Спасибо, что прочитали. Я с нетерпениеможидаю, что вы станете подписчиками и прочитаете больше высококачественных статей.



Интервьюер: Что случилось с «npm run xxx?
Секрет, о котором не знает большинство людей.javascript.plainenglish.io»









Интервьюер: Может ли «x !== x возвращать True в JavaScript?
Пять волшебных знаний в области JavaScript, о которых вы, возможно, не знали!javascript.plainenglish.io»





Дополнительные материалы на PlainEnglish.io.

Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .