我有一个重复值的数组。
我想创建一个Set来获取该数组的不同值,并删除或创建一个新的Array,该数组将具有相同的数据减去创建Set所需的元素。
这不仅仅是删除重复项的问题,而是删除原始数组中每个不同值的SINGLE条目
这样的东西行得通,但是我想知道是否有更直接的方法:
let originalValues = [
'a',
'a',
'a',
'b',
'b',
'c',
'c',
'd'
];
let distinct = new Set(originalValues);
/*
distinct -> { 'a', 'b', 'c', 'd' }
*/
// Perhaps originalValues.extract(distinct) ??
for (let val of distinct.values()) {
const index = originalValues.indexOf(val);
originalValues.splice(index, 1);
}
/*
originalValues -> [
'a',
'a',
'b',
'c'
];
*/
最佳答案
您可以对 Set
使用闭包并检查是否存在。
let originalValues = ['a', 'a', 'a', 'b', 'b', 'c', 'c', 'd'],
result = originalValues.filter((s => a => s.has(a) || !s.add(a))(new Set));
console.log(result);