JavaScript之数组去重

数组去重是一道经典的手写面试题,在真实的项目中碰到的数组去重,一般都是后台去处理,很少让前端处理数组去重。虽然日常项目用到的概率比较低,但还是需要了解一下,以防面试的时候可能会被问到。这篇内容接下来会写出js中数组去重的几种方法:

双重循环遍历数组

定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。

  function unique(arr) {
    	var newArr = [];
        for (let i = 1; i < arr.length; i++) {
            for (let j = 0; j < newArr.length; j++) {
                if (arr[i] === newArr[j]) {
                    break;
                }
            }
            if (newArr.length == j) {
                newArr.push(arr[i]);
            }
        }
        return newArr;
    }

这种方法便于新手理解

利用splice直接在原数组进行操作

双层循环,外层循环元素,内层循环时比较值

值相同时,则删去这个值

注意点:删除元素之后,需要将数组的长度也减1.

function unique(arr){
 for(i = 0; i < arr.length; i++){
  for(j = i + 1; j < arr.length; j++){
   if(arr[i] == arr[j]){
    arr.splice(j,1);
    arr.length--;
    j--;
   }
  }
 }
 return arr;
}

利用对象的属性不能相同的特点进行去重

function unique(arr){
  var obj = {},
  result = [];
 for(i = 0; i< arr.length; i++){
  if(!obj[arr[i]]){ //如果能查找到,证明数组元素重复了
   obj[arr[i]] = 1;
   result.push(arr[i]);
  }
 }
 return result;
}

利用数组的indexOf下标属性来查询。

        function unique(arr) {
            var newArr = []
            for (var i = 0; i < arr.length; i++) {
                if (newArr.indexOf(arr[i])===-1) {
                    newArr.push(arr[i])
                }
            }
            return newArr
        }

利用数组原型对象上的includes方法。

        function unique(arr) {
            var newArr = []
            for (var i = 0; i < arr.length; i++) {
                if (!newArr.includes(arr[i])) {
                    newArr.push(arr[i])
                }
            }
            return newArr
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值