Как повторно удалить повторяющиеся элементы в массиве в node js - PullRequest
0 голосов
/ 06 августа 2020

У меня проблема, когда мне нужно отфильтровать массив повторяющихся значений. EG: [1,2,3,3,3,4] -> [1,2,3,4]

В настоящее время я написал следующий код, который работает, но я не думаю, что избыточности достаточно.

const deduper = (arrayToDedupe) =>
  Object.values(
    Object.assign({}, [
      ...new Set(
        [...new Set(arrayToDedupe)]
          .filter((element, index, array) => index === array.indexOf(element))
          .reduce((acc, elementv2) => {
            if (acc.includes(elementv2)) {
              return acc;
            } else {
              acc.push(elementv2);
              return acc;
            }
          }, [])
          .map((elementv3, indexv3, arrayv3) => {
            if (indexv3 === arrayv3.indexOf(elementv3)) {
              return elementv3;
            } else {
              return undefined;
            }
          })
          .filter((x) => x)
      ),
    ])
  )
    .sort()
    .map((element, index, array) => {
      if (array[index + 1] === element) return undefined;
      return element;
    })
    .filter((x) => x);

Есть ли способ действительно действительно гарантировать несомненно, что в возвращаемом массиве не будет дубликатов. Нужно ли мне добавлять дополнительные методы связанных массивов?

1 Ответ

1 голос
/ 06 августа 2020

Вы можете использовать это решение с одним лайнером с ecmascript6:

const uniqueArray = [...new Set([1,2,3,3,3,4])];
console.log(uniqueArray);

Набор - это структура данных, которая содержит уникальные значения без порядка. Уловка, которую нужно знать, - это деструктуризация набора, возвращающая массив

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...