2016-12-05 79 views
0

我有以下元素的数组:的Javascript:查找并删除*所有*重复项目

A 
B 
B 
C 
B 

如果一个项目出现不止一次,我不得不删除其所有事件。因此,这将是这样的:

A 
C 

我发现很多的例子就如何删除其他重复的元素,但仍保留“原始”一个,出来的,我无法找到任何接近它我真的迷失了。

我曾考虑过在对象中存储以下内容: 1.项目的价值; 2.它出现多少次; 3.所有外观的位置。

如果出现的时间超过1,我会删除数组中的所有以下位置。这是个好主意吗?什么是最好的方法来做到这一点?

非常感谢!

+0

要澄清一下,您只需要修改原来的数组,而不是创建新的元素从原始数组中删除? – Daryl

+0

一种方法可能是创建一个新数组,并且只检查原始值是否已经存在于新数组中。也许不是最好的解决方案,但是是一种方法:P – Medda86

+0

@Daryl如果它是在一个新的数组中,它会更好:) – PossessWithin

回答

9

为此,您可以使用filter()并通过检查只返回独特的元素,如果indexOf等于lastIndexOf

var ar = ['A', 'B', 'B', 'C', 'B']; 
 
var result = ar.filter(function(e) { 
 
    return ar.indexOf(e) == ar.lastIndexOf(e); 
 
}) 
 

 
console.log(result)

+1

@Nenad,Nice!而不是'ar.indexOf(e)',你可以使用'filter'已经给出的当前索引,在它的第二个参数上,与'ar.lastIndexOf(e)'进行比较。签名是'filter(element,index,array)'回调不可重复使用的' –

+0

。 –

+0

非常感谢! – PossessWithin

相关问题