首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在JavaScript中创建唯一项的列表?

如何在JavaScript中创建唯一项的列表?
EN

Stack Overflow用户
提问于 2012-07-27 21:26:16
回答 8查看 52.6K关注 0票数 19

在我的CouchDB reduce函数中,我需要将一个条目列表缩减为唯一的条目。

注意:在这种情况下,可以有一个列表,它将是一小部分字符串类型的项目。

我目前的方法是设置一个对象的键,然后返回该对象的键,因为代码不能使用像_.uniq这样的东西。

我想找到一种比这个更优雅的拼写方式。

function(keys, values, rereduce) {
  // values is a Array of Arrays
  values = Array.concat.apply(null, values);
  var uniq = {};
  values.forEach(function(item) { uniq[item] = true; });
  return Object.keys(uniq);
}
EN

回答 8

Stack Overflow用户

发布于 2018-09-29 15:36:47

最好的方法似乎是使用ES6和Set。根据fiddle的说法,单行速度*比上面更快

const myList = [1,4,5,1,2,4,5,6,7];
const unique = [...new Set(myList)];
    
console.log(unique);

*在safari中测试

票数 47
EN

Stack Overflow用户

发布于 2015-07-01 18:37:59

适用于小列表的另一种方法是模仿sort | uniq的Unix命令行方法

    function unique(a) {
        return a.sort().filter(function(value, index, array) {
            return (index === 0) || (value !== array[index-1]);
        });
    }

此函数对参数进行排序,然后筛选结果以忽略与其前身相等的所有项。

基于键的方法很好,对于大量的项( O(n )用于将n项插入到哈希表中,而O(N log n)用于对数组进行排序)将具有更好的性能特征。然而,这在小列表中不太可能被注意到。此外,在这个版本中,如果需要,您可以修改它以使用不同的排序或相等函数;使用散列键,您将坚持使用键相等的JavaScripts概念。

票数 10
EN

Stack Overflow用户

发布于 2018-08-13 04:08:21

这应该适用于任何东西,而不仅仅是字符串:

export const getUniqueList =  (a: Array<any>) : Array<any> => {

  const set = new Set<any>();

  for(let v of a){
      set.add(v);
  }

  return Array.from(set);

};

以上内容可以简化为:

export const getUniqueValues = (a: Array<any>) => {
   return Array.from(new Set(a));
};

:)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11688692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档