js数组去重的几种方法

1. zepto实现数组去重的方法:
var uniq = function(array){
    return [].filter.call(array, function(item, index){
        return array.indexof(item) == index;
    })
}

判断元素在数组中首次出现的位置,是否等于它在数组中的位置。

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

item | array.indexof(item) | index
1              0               0   //v
1              0               1
2              2               2   //v
2              2               3
3              4               4   //v
3              4               5
4              6               6   //v

uniq(a);   //[1,2,3,4]
2. 利用ES6中 Set 的特性

Set 是ES6提供的一种新的数据结构。它类似于数组,但是成员的值都是唯一的,没有重复的值。
它接收一个数组或者类似于数组的参数。

var arr = [...new Set([1,1,2,2,3,3,4])];

arr  // [1, 2, 3, 4]
3. 遍历
var arr = [];
[1,1,2,2,3,3,4].forEach((item, index)=>{
    if(arr.indexOf(item) === -1) {
        arr.push(item);
    }
});

arr  // [1, 2, 3, 4]

这种方法弊端:需要定义一个新的数组来储存结果。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • js去重的几种方法: 1.使用indexOf()方法---[a.检查当前数组是否存在;b.比较数组的下标---(借...
    LuckyS007阅读 706评论 0 3
  • 思路一: 构建一个新的数组存放结果 for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比 若结果数...
    txwslyf阅读 288评论 0 0
  • 在项目中偶尔会用到数组,通过原生js去除数组的重复项。简单的记下几种方法,亲测可用。。 第一种方法: 第一种方法是...
    臭臭臭魁阅读 3,523评论 9 1
  • 三,字符串扩展 3.1 Unicode表示法 ES6 做出了改进,只要将码点放入大括号,就能正确解读该字符。有了这...
    eastbaby阅读 1,601评论 0 8
  • 某生,灵慧俊极,然性佻脱,不治产业,家无余资,终日叹不缝时。恰有一女随老父居于邻,姿色颇好。某生常意挑之,做倜傥之...
    木里鱼阅读 182评论 10 3