美文网首页
javascript数组去重的方法

javascript数组去重的方法

作者: 原来是禽兽 | 来源:发表于2019-04-04 15:31 被阅读0次

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]

后续有有意义的继续更新

相关文章

网友评论

      本文标题:javascript数组去重的方法

      本文链接:https://www.haomeiwen.com/subject/avgfiqtx.html