js 数组去重

一、高性能数组去重

// 需要 es6 支持
function distinct(a, b) {
    return Array.from(new Set([...a, ...b]))
}
// sort 的方式
function distinct(a, b) {
    let arr = a.concat(b)
    arr = arr.sort()
    let result = [arr[0]]

    for (let i=1, len=arr.length; i<len; i++) {
        arr[i] !== arr[i-1] && result.push(arr[i])
    }
    return result
}
// obj 的方式
function distinct(a, b) {
    let arr = a.concat(b)
    let result = []
    let obj = {}

    for (let i of arr) {
        if (!obj[i]) {
            result.push(i)
            obj[i] = 1
        }
    }

    return result
}

 

二、二维数组去重

// 根据二维数组中 某一个数据删除
var arr = [
        [1, 2, 3],
        [2, 2, 3],
        [3, 2, 4],
        [5, 6, 1],
        [1, 3, 3]
      ];

      let result = []
      let obj = {}

      for (let item of arr) {        
        if (!obj[item[2]]) {
          result.push(item)
          obj[item[2]] = 1
        }
      }

      console.log('result', result)
// 去除二维数组中相同数据的数组
var arr = [
        [1, 2, 3, 4],
        [3, 4, 5, 6],
        [1, 2, 3, 4]
      ]

var removeRepeat = function (arr) {
    var obj = {};
    for (var i = 0; i < arr.length; i++) {
        // 判断当前项是否遍历过,是则删除,否存入obj以作对照
        if (obj.hasOwnProperty(arr[i])) {
             arr.splice(i, 1)
             i++;
            }
            obj[arr[i]] = i;
        }
    return arr;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值