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