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

Какой аналог функции 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);
  • Вопрос задан
  • 860 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 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 это называется объект, а не массив.
Аналог есть никакой. Давайте сделаем:

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)
  );
Ответ написан
Комментировать
E1ON
@E1ON Куратор тега JavaScript
Programming, Gamedev, VR
Комментировать
@londhor
Если без библиотек — создай объект, и в ключи запиши значения из массивов.
Тк ключи у объекта не повторяются — лишние данные уйдут.

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

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

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