Удаление дубликатов из массива в javascript

var removeDuplicates = function(nums) {
    for(let i=0; i<nums.length; i++){
        for(let j=i+1; j<nums.length; j++){
            if (nums[i]===nums[j]){
                nums.splice(i,1);
            }
        }
    }
};

это мой код для удаления дубликатов, он работает для чисел, которые повторяются дважды, но не работает для чисел, которые повторяются более 2. Может ли кто-нибудь сказать мне, что здесь не так? Я хочу решить эту проблему, используя только циклы for. Ввод: 0,0,1,1,1,2,2,3,3,4 Выход: 0,1,1,2,3,4 Ожидаемое: 0,1,2,3,4

Я бы использовал Set или объектные ключи, чтобы получить уникальные значения.

doublesharp 20.02.2023 17:34

Но ошибка в вашем коде заключается в том, что внутренний цикл также должен начинаться с 0, а не с i+1.

doublesharp 20.02.2023 17:34
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  • Вы удаляете элементы во время итерации вперед, поэтому вы будете пропускать элемент каждый раз, когда он удаляется (из-за смещения индексов вниз). Вместо этого выполните цикл назад, чтобы удалить во время итерации.
  • Вырваться из внутреннего цикла, как только будет найдено совпадающее число.

const removeDuplicates = function(nums) {
  for (let i = nums.length - 1; i >= 0; i--) {
    for (let j = 0; j < i; j++)
      if (nums[j] === nums[i]) {
        nums.splice(i, 1);
        break;
      }
  }
};
let arr = [0,0,1,1,1,2,2,3,3,4];
removeDuplicates(arr);
console.info(arr);

Поиск уникальных элементов массива намного проще сделать с помощью Set:

const uniqueValues = nums =>  [...new Set(nums)];
console.info(uniqueValues([0,0,1,1,1,2,2,3,3,4]));

Другие вопросы по теме