【问题标题】:How to get unique array with only filter in Javascript [duplicate]如何在Javascript中仅使用过滤器获取唯一数组[重复]
【发布时间】:2017-04-12 23:43:10
【问题描述】:

我有一个数组:

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

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

b = [2,3,4,5]

我试过了

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

我不想使用 for 循环。

【问题讨论】:

标签: javascript angularjs arrays


【解决方案1】:

借助filter 方法的第二个 - 索引 - 参数,您可以在 JavaScript 中简单地做到这一点:

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

【讨论】:

  • 如果你能解释一下这个“function(d,i){return a.indexOf(d)==i}”,我会很高兴
  • i in parameter 用于索引,这意味着当您检查倒数第二个 5 时,索引将为 4 但 indexOf 将为 3,因此它们不匹配,因此它将过滤掉
  • 谢谢。您对这个问题给出了一个简单、棘手且很好的答案
【解决方案2】:

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

如果您使用的是 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);
})

【讨论】:

    【解决方案3】:
    var b = a.filter( function( item, index, inputArray ) {
           return inputArray.indexOf(item) == index;
    });
    

    【讨论】:

    • 请在您的代码中添加一些解释
    • 请参考 Yaser Adel Mehraban sloution
    猜你喜欢
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 2023-03-23
    • 2012-06-30
    • 2016-12-17
    相关资源
    最近更新 更多