Как оставить в массиве только уникальные значения js
4 года назад
Человек-Молекула
Ответы
Чтобы оставить в массиве только уникальные значения, воспользуемся таким лайфхаком:
Документация:
3 года назад
Виктория Аблаева
Чтобы получить из массива уникальные значения, можно воспользоваться простым алгоритмом:
- Инициируем простой массив, в который будем складывать результат
- Проходимся по исходному массиву и на каждой итерации проверяем, если в результате еще нет текущего элемента, то добавляем его в результат.
Для реализации можно использовать либо цикл, либо встроенные методы для перебора массива, например reduce
:
4 года назад
Ivan Gagarinov
Чтобы оставить в массиве только уникальные значения, можно воспользоваться методами filter()
и indexOf()
:
Принцип работы заключается в том, что мы сравниваем индекс текущего элемента массива (ind
) с индексом первого вхождения этого элемента в массив (arr.indexOf(el)
). И если они не равны, то это означает, что вхождение данного элемента в массив является не первым, то есть элемент ранее уже встречался в массиве.
3 года назад
Кирилл Маркеев
По сути как первое решение, но чуть усовершенствованное. Работает на ВСЕХ типах, включая объекты и функции (но кроме null/false/undefined)
const options = [
'Раз',
2,
3,
true,
(a, b) => a + b,
4,
'Раз',
56,
{ a: 1, b: 0 },
3,
2,
(a, b) => a + b,
'Раз',
{ a: 1, b: 0 },
1,
false,
false,
true,
(a, b) => a + b,
];
const getUniqueOptions = (options) => {
return options.reduce(
(res, cur) =>
res.find((find) => JSON.stringify(find) === JSON.stringify(cur))
? res
: [...res, cur],
[]
).sort((a, b) => a - b); // и сортировочка для красоты :)
};
console.log(getUniqueOptions(options)); // ['Раз', 2, 3, true, ƒ, 4, 56, {…}, 1, false, false]
3 года назад
console.log(Array.from(new Set([1, 2, 1, 2, 3, 4, 5, 2, 4, 1, 1, 6])))
// [ 1, 2, 3, 4, 5, 6 ]
3 года назад
Виталий Меншиков