javascript数组去重的方法

1、最简单的方法

  • 描述
    使用 indexOf 判断数组中是否包含某个值
  • 使用
var arr = [1,13,24,11,11,14,1,2];
var newArr= [];
for( var i=0; i<arr.length; i++ ) {
    if( newArr.indexOf(arr[i]) === -1 ) {
    newArr.push(arr[i]);
    }
}
 // newArr:  [1, 13, 24, 11, 14, 2]

2、第一种方法的变种(使用对象属性)

  • 描述
    可能由于 indexOf 在IE9以下不支持 所以才会使用,思路是一模一样的
var arr = [1,13,24,11,11,14,1,2];
var obj = {};
var newArr = [];
for( var i=0; i<arr.length; i++ ) {
    if( !obj[arr[i]] ) {
        obj[arr[i]] = true;
        newArr.push(arr[i]);
    }
}
 // newArr:  [1, 13, 24, 11, 14, 2]

3、又一个变种方法(使用sort方法)

  • 描述
    通过sort默认排序后,循环比较最后一位是否相等,该方法会改变原有数组
  • 使用
var arr = [1,13,24,11,11,14,1,2,1];
arr.sort();
var newArr = [];
for( var i=0; i<arr.length; i++ ) {
    if( newArr[newArr.length-1] !== arr[i] ) {
        newArr.push(arr[i]);
    }
}
 // newArr:  [1, 13, 24, 11, 14, 2]

4、使用嵌套循环

  • 描述
    通过数组嵌套循环 + splice方法。该方法会改变原数组
  • 使用
var arr = [1,13,24,11,11,14,1,2,1];
for( var i=0, len = arr.length; i<len; i++ ) {
    for( var j=i+1; j<len; j++  ) {
        if( arr[i] === arr[j] ) {
            arr.splice(j, 1);
        }
    }
}
 // newArr:  [1, 13, 24, 11, 14, 2]

5、使用Set对象:

  • 描述:
    Set对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
  • 使用
var arr = [1,13,24,11,11,14,1,2];
var newArr = Array.from(new Set(arr));
 // newArr:  [1, 13, 24, 11, 14, 2]

后续有有意义的继续更新

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 现在要求去重下面这个数组 方法一:ES6 Set() Set 是ES6新加的集合,集合中的值不会重复。 ......
    泡沫的快乐阅读 1,715评论 0 2
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,831评论 0 4
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 10,719评论 0 21
  •   引用类型的值(对象)是引用类型的一个实例。   在 ECMAscript 中,引用类型是一种数据结构,用于将数...
    霜天晓阅读 4,814评论 0 1
  • 四十四 晚饭后的时间精彩 一个玻璃屏幕 演绎人生的喜怒悲哀 四十五 几十年仿佛是几个世纪 复活 复活就在明天 四十...
    萧路遥阅读 1,292评论 0 0

友情链接更多精彩内容