Какой аналог функции 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);
  • Вопрос задан
  • 797 просмотров
Решения вопроса 5
Lynn
@Lynn
nginx, js, css
let array = { ... } — это не массив

Если таки для массива, то можно воспользоваться Set и spread
const array = [ 0, 0, 1, 1, 2, 2, 3, 3, 4, 4 ];
const arrUniq = [ ...new Set(array) ]; // [ 0, 1, 2, 3, 4 ]
Ответ написан
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
То, что вы пытаетесь уникализировать - в js это называется объект, а не массив.
Аналог есть никакой. Придётся вручную делать:

Object.fromEntries(Array.from(
  new Map(Object
    .entries(obj)
    .map(n => n.reverse())
    .reverse()
  ),
  n => n.reverse()
))

или

Object
  .entries(obj)
  .reduce((acc, [ k, v ]) => (acc[0].has(v) || (acc[0].add(v), acc[1][k] = v), acc), [ new Set, {} ])
  .pop()
Ответ написан
Комментировать
E1ON
@E1ON Куратор тега JavaScript
Programming, Gamedev, VR
Комментировать
@londhor
Если без библиотек — создай объект, и в ключи запиши значения из массивов.
Тк ключи у объекта не повторяются — лишние данные уйдут.

P.S. — сработает, если работаешь со строками
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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