@StepanMogilyov

Как работает указанный код, удаляющий дубликаты в массиве?

Добрый день. Нужно удалить дубликаты в массиве и вернуть новый. Код работает, он не мой. Помогите плиз понять как именно он работает. Мне пока сложно(
function removeDuplicates (arr){
  let result = [];
  for (let n of arr) {
    let contains = false;
    for (let m of result) {
      if (m === n) {
        contains = true;
        break;
      }
    }
    if (!contains) result.push(n);
  }
  return result;
}
console.log(removeDuplicates([1,2,3,4,5,1,1,2,2,3,3,65,9,65,1,5,65, 117, 117, 118,118, 12333, 12333]))
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
Dr_Elvis
@Dr_Elvis
В гугле забанен
function removeDuplicates (arr){//функция, которая принимает на себе массив для удаления дублей
    let result = [];//создается новый пустой список, в который будут добавляться уникальные значения
    for (let n of arr) {//перебираем исходный массив по одному элементу
        let contains = false;//ставим флаг в статус false
        for (let m of result) {//перебираем наш новый массив(при первой итерации там пусто, но потом добавляются значения)
            if (m === n) {//сравниваем очередной элемент из исходного списка с каждым элементом нашего нового списка и, если такой элемент уже есть, то выполняем условия ниже
                contains = true;//а именно ставим флаг что такой элемент есть
                break;//выходим из цикла for (let m of result)
            }
        }
        if (!contains) result.push(n);//проверяем наш флаг. если там стоит false, то добавляем очередной элемент из исходного списка в наш новый, иначе просто пропускаем и идем к следующему элементу исходного списка
    }
    return result;//После того как все элементы перебрали - возвращаем наш новый список с уникальными значениями, которые далее выводятся в консоле
}
console.log(removeDuplicates([1,2,3,4,5,1,1,2,2,3,3,65,9,65,1,5,65, 117, 117, 118,118, 12333, 12333]))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Примерно так:
const removeDuplicates = (arr) => 
  arr.reduce(
    (acc, cur) => (acc.includes(cur) ? acc : (acc.push(cur), acc)),
    [],
  );

console.log(removeDuplicates([1,2,3,4,5,1,1,2,2,3,3,65,9,65,1,5,65, 117, 117, 118,118, 12333, 12333]));
// Array(10) [ 1, 2, 3, 4, 5, 65, 9, 117, 118, 12333 ]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы