Kowka_VN
@Kowka_VN

Как сделать массив уникальных массивов?

Вот есть массив [
[200,200],
[300,300],
[200,250],
[200,200]
]
нужно чтоб в нём не было повторяющихся массивов.
Мб через объект как-то сделать.
  • Вопрос задан
  • 93 просмотра
Решения вопроса 3
@StockholmSyndrome
function isSame(a, b) {
  return a.every((item, i) => item === b[i]);
}


arr.reduce((acc, curr) => {
  if (acc.every((item) => !isSame(item, curr))) {
    acc.push(curr);
  }

  return acc;
}, []);
Ответ написан
hzzzzl
@hzzzzl
очень некрасиво, но для большинства случаев сработает, а если там заведомо массивы из 2 чисел, то сработает наверно всегда

a = [
[200,200],
[300,300],
[200,250],
[200,200]
]

Array.from(
  new Set(a.map(el => el.join(' - ')))
).map(el => el.split(' - '))
Ответ написан
Комментировать
Xuxicheta
@Xuxicheta
инженер
const arr = [
  [200, 200],
  [300, 300],
  [200, 250],
  [200, 200]
];

const uniAr = Object.values(
  arr.reduce((acc, el) => {
    acc[JSON.stringify(el)] = el;
    return acc;
  }, {})
);

для любых массивов, не только из чисел
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы