美文网首页
数组去重

数组去重

作者: 樱桃小白菜 | 来源:发表于2021-03-27 13:01 被阅读0次

方法一

利用 ES6 新增的 Set 对象。
它类似于数组,但是成员的值都是唯一的,没有重复的值。
Set 本身是一个构造函数,用来生成 Set 数据结构。
可以利用 Set 进行数组的去重, 并集, 交集,和差集。

//利用 set 求 数组的差集
var a = new Set([1, 2, 3]);
var b = new Set([4, 3, 2]);
var intersect = new Set([...a].filter(x => b.has(x))); // {2, 3}
//利用 set 求 数组的并集
var a = [1, 2, 3]
var b = [4, 3, 2]
function arr(arr1,arr2) {
  return [...new Set([...a, ...b]) ]
 }

 console.log(arr(a,b))      // [1, 2, 3, 4]

方法二

利用双层循环的方法来去重

通过for 嵌套双层循环 利用数组的每一项与数组中全部项对比找出相同项。

for 嵌套 for,然后通过 push 将不同的元素添加到新数组

var array = [1, 1, '1', '1']

// 如果array[i]是唯一的,那么执行完循环,将array[i]添加到res中
function unique(array) {
  var res = []
  for (var i = 0, arrayLen = array.length; i < arrayLen; i++) {
    for (var j = 0, resLen = res.length; j < resLen; j++ ) {
      if (array[i] === res[j]) {
        break;
      }
    }
    if (j === resLen) {
      res.push(array[i])
    }
  }
  return res
}

console.log(unique(array)); // [1, "1"]

通过for 嵌套for,将数组的每一项与数组中全部项对比然后通过 splice() 删除重复项

var arr = 
[1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}]
function unique(arr){
  for(var i=0; i<arr.length; i++){
    for(var j=i+1; j<arr.length; j++){
      if(arr[i]===arr[j]){
        arr.splice(j,1)
          j--
      }
    }
  }
  return arr
}
console.log(unique(arr))
//[1, "true", true, 15, false, undefined, null, NaN, NaN, "NaN", 0, "a", {…}, {…}]

通过for循环数组中元素, 如果 indexOf 检测出 数组 res 中没有该项则添加到数组 res 中

var array = [1, 1, '1']

function unique(array){
  var res = []
  for(var i=0, len=array.length; i<len; i++){
    var ite = array[i]
    if(res.indexOf(ite) === -1){
      res.push(ite)
    }
  }
  return res
}

console.log(unique(array))

使用 sort 方法排序后,判断当前元素与上一个元素是否相同,删除相同项去重

var array = [1, 1, '1'];

function unique(array) {
    var res = []
    var sortedArray = array.concat().sort()
    var seen;

    for (var i = 0, len = sortedArray.length; i < len; i++) {
        // 如果是第一个元素或者相邻的元素不相同
        if (!i || seen !== sortedArray[i]) {
            res.push(sortedArray[i])
        }
        seen = sortedArray[i];
    }
    return res;
}

console.log(unique(array));

使用 filterindexOf 来简化循环

var array = [1, 1, '1'];

function unique(array){
  var res = [];
  array.filter((item,index,array) => {
    if(res.indexOf(array[index]) === -1){
      res.push(array[index])
    }
  })
  return res
}

console.log(unique(array))

参考:

JavaScript专题之数组去重

相关文章

  • Array集结号

    实现数组去重的几种方法 数组去重一 数组去重二 利用数组indexof+push实现数组去重 数组去重三 利用对象...

  • 实现数组去重有哪些方式

    简单的数组去重 数组对象去重

  • 数组去重的四种方法

    利用双for循环去重 利用对象数组去重 利用对象数组去重并且记录重复次数 通过创建一个新数组进行数组去重

  • js数组去重、对象数组去重

    普通数组去重 一、普通数组去重 方法一:遍历数组法 方法二:排序法 方法三:对象法 对象数组去重 方法一:将对象数...

  • javascript数组去重,数组对象去重

    利用Reduce去重 function unique(arr) {var obj = {};arr = arr.r...

  • js:数组去重

    数组去重的常见写法: 数组去重封装成方法: es6的数组去重(Array.from):

  • ES6数组去重

    普通数组去重 方法1 方法2 对象数组去重

  • js reduce去重用法

    reduce不仅仅可以数据累加,还可以实现去重效果。 重复次数计算 数组去重 数组对象去重,转为数组 对象去重

  • 数组去重

    传统方法 ES6 扩展 传统方法 最后再写到 Array.prototype 原型中

  • 数组去重

    老题了。。虽然网上一搜一大堆,还是自己想了想,自己动笔写了几种。

网友评论

      本文标题:数组去重

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