如何在Javascript中只使用过滤器获取唯一数组

GsM*_*tra 9 javascript arrays angularjs

我有一个数组:

var a = [2,3,4,5,5,4]
Run Code Online (Sandbox Code Playgroud)

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

b = [2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

我试过了

a.filter(function(d){return b.indexOf(d)>-1})
Run Code Online (Sandbox Code Playgroud)

我不想用于循环.

Ash*_*Jha 13

你可以在JavaScript中,在方法的第二个 - index - 参数的帮助下完成它filter:

var a = [2,3,4,5,5,4];
a.filter(function(value, index){ return a.indexOf(value) == index });
Run Code Online (Sandbox Code Playgroud)

  • 我在参数中用于索引,意味着当你检查第二个5时,索引将是4但是indexOf将是3因此它们不匹配因此它将被过滤掉 (3认同)

Yas*_*ser 6

这不是与 Angular 相关的问题。它可以通过多种方式解决,具体取决于您使用的库。

如果您使用的是 jquery:

var uniqeElements = $.unique([2,3,4,5,5,4]);
Run Code Online (Sandbox Code Playgroud)

输出将是:

[2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

如果您使用下划线:

var uniqeElements = _.uniq([2,3,4,5,5,4]);
Run Code Online (Sandbox Code Playgroud)

相同的输出。

和纯JS代码:

var unique = [2,3,4,5,5,4].filter(function(elem, index, self) {
    return index == self.indexOf(elem);
})
Run Code Online (Sandbox Code Playgroud)