Главная > javascript, Колян учится на программиста > Javascript поиск одинаковых чисел массива

Javascript поиск одинаковых чисел массива

Задача.
Написать функцию, которая находит в массиве значения, повторяющиеся два и более раз, и возвращает их.

Решение.
Предложу два варианта решения. Первый вариант – классический, более длинный в плане кода, и возможно, немного более сложный для понимания, но и более оптимальный. Т.е. в данном алгоритме нет никаких лишних шагов и его можно использовать для больших массивов.
Второй вариант – более короткий в записи и более очевидный, но будет дольше выполняться в случае больших массивов, поскольку содержит предварительную сортировку массива.
Обращаю внимание, что оба варианта в результате выдают уникальные значения. Т.е., если исходный массив содержит, например, значение 5 более 2-х раз, то в результате 5 будет выведено один раз. Если по условию задачи этого не требуется, то в коде нужно убрать блоки проверки уникальности результата.

Вариант 1:
Суть алгоритма в том, что внешним циклом мы проходим исходный массив слева-направо, а внутренним циклом идем от текущего элемента в обратную сторону справа-налево. Более подробно данный метод рассматривался в статье Подсчет количества уникальных чисел в массиве.

Вариант 2:
Во втором варианте решения, мы сначала сортируем массив с помощью метода sort() и после этого нам не нужно делать обратный ход по массиву, как в предыдущем варианте решения. Нам достаточно сравнить значения текущего и предыдущего элемента. Данная методика применялась при решении задачи, описанной в статье Все ли элементы массива различны.

Цикл проверки наличия элемента в результирующем массиве можно заменить на следующую конструкцию:

Надеюсь, тема раскрыта. Если есть вопросы – спрашивайте, постараюсь ответить.



  1. Комментариев пока нет.
  1. Трекбеков пока нет.