Задать вопрос

Какой аналог функции array_unique (удалить повторяющиеся значения) в PHP у JavaScript?

Вот например если написать код:
$array = [
    0 => 0,
    1 => 0,
    2 => 1,
    3 => 1,
    4 => 2,
    5 => 2,
    6 => 3,
    7 => 3,
    8 => 4,
    9 => 4
];
$arrUnique = array_unique($array);

echo '<pre>';
print_r ($arrUnique);
echo '</pre>';

То выведет:
Array
(
    [0] => 0
    [2] => 1
    [4] => 2
    [6] => 3
    [8] => 4
)


А как также сделать в JavaScript? Пример:
let array = {
  0: 0,
  1: 0,
  2: 1,
  3: 1,
  4: 2,
  5: 2,
  6: 3,
  7: 3,
  8: 4,
  9: 4
};
let arrUnique = array_unique(array);
  • Вопрос задан
  • 878 просмотров
Подписаться 1 Простой Комментировать
Решение пользователя 0xD34F К ответам на вопрос (5)
0xD34F
@0xD34F Куратор тега JavaScript
То, что вы пытаетесь уникализировать - в js это называется объект, а не массив.
Аналог есть никакой. Давайте сделаем:

const uniqueObj = (obj, key = val => val) =>
  Object.fromEntries(Object
    .entries(obj)
    .filter(function(n) {
      const k = key(n[1], n[0]);
      return !this.has(k) && this.add(k);
    }, new Set)
  );
Ответ написан
Комментировать