2016-11-29 58 views
8

我有一个数组:如何获得只有过滤器独特的排列在Javascript

var a = [2,3,4,5,5,4] 

我想唯一的数组出给定数组像

b = [2,3,4,5] 

我已经试过

a.filter(function(d){return b.indexOf(d)>-1}) 

我不想使用for循环。

+5

http://stackoverflow.com/questions/9229645/remove-duplicates-from-javascript-array –

+0

这里有多个实例 - HTTP://www.jstips。 co/en/deduplicate-an-array /使用较新的ES语法,以及将来的实现(使用数组集合) – ioneyed

+0

使用lodash库(https://lodash.com/docs/#uniq) – Pratap

回答

11

你可以简单地做它在JavaScript中,与第二的帮助 - 指数 - 该filter方法的参数:

var a = [2,3,4,5,5,4]; 
a.filter(function(value, index){ return a.indexOf(value) == index }); 
+0

如果你解释这个,我会很高兴“函数(d,i){返回a.indexOf(d)== i}” –

+2

我在参数是索引,意味着当您检查第二个最后5时,索引将4,但indexOf将3,所以他们不匹配因此它会过滤出 – Ash

+0

谢谢。你有gi ven简单,棘手和伟大的回答这个问题 –

0
var b = a.filter(function(item, index, inputArray) { 
     return inputArray.indexOf(item) == index; 
}); 
+2

请给你的代码添加一些解释 –

+0

请参考Yaser Adel Mehraban sloution –

2

这不是一个角的相关问题。它可以通过几种方式来解决,具体取决于您使用的库。

如果您正在使用jQuery:

var uniqeElements = $.unique([2,3,4,5,5,4]); 

输出将是:

[2,3,4,5] 

如果您正在使用下划线:

var uniqeElements = _.uniq([2,3,4,5,5,4]); 

相同的输出。

和纯JS代码:

var unique = [2,3,4,5,5,4].filter(function(elem, index, self) { 
    return index == self.indexOf(elem); 
}) 
相关问题