关于angularjs:如何在Javascript中仅使用过滤器获取唯一数组

How to get unique array with only filter in Javascript

本问题已经有最佳答案,请猛点这里访问。

我有一个数组:

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

我想从给定的数组中得到唯一的数组,比如

1
b = [2,3,4,5]

我试过了

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

我不想用for循环。


通过filter方法的第二个索引参数的帮助,您可以简单地在javascript中执行此操作:

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


这不是一个角度相关的问题。根据您使用的库,可以用几种方法来解决这个问题。

如果使用jquery:

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

输出将是:

1
[2,3,4,5]

如果使用下划线:

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

相同的输出。

纯JS代码:

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


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