js中数组去重

方法一

核心思路:
 1. 利用 Es6 (Set数据结构)
 2. 利用扩展用算符[... ]转化为数组
        var arr=[1,2,1,3,4,4,5,8]
        var num = new Set(arr);
        console.log(num); //返回是一个对象{1,2,3,4,5,8}
        var ary = [...num] //扩展用算符... 转换为真数组 
        console.log(ary);  //得到去重后数组[1,2,3,4,5,8]
        //简单直接写法就是   [...new Set(arr)] 

方法二

核心思路:
1. 利用sort()排序方法
2. 排序后前后比较
        var arr = [1, 2, 1, 3, 4, 4, 5, 8,];
        arr = arr.sort()  //[1,1,2,3,4,4,5,8]
        var array = [];
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] !== arr[i+1]) {
                array.push(arr[i]);
            }
        }
        console.log(array);

方法三

核心思路:
1. 判断新空数组中有没有原数组的值。利用indexOf()方法  通过值查找索引,如果没有找到返回值为-1
2. 利用push()方法 将找出的值追加到新数组中
        var arr=[1,2,1,3,4,4,5,8];
        var temp = []; 
        for(var i=0;i<arr.length;i++){
            if(temp.indexOf(arr[i])==-1){
                temp.push(arr[i])
            }
        }
        console.log(temp);

方法四

核心思路:
1. 大致方法跟方法二基本一样
2. 判断 如果当前数组中第i项在当前数组中第一次出现的索引是不是i  如果是存入新数组  不是代表重复值
        var arr=[1,2,1,3,4,4,5,8];
        var temp = [];
        for(var i =0;i<arr.length;i++){
            if(arr.indexOf(arr[i])==i){
                temp.push(arr[i])
            }
        }
        console.log(temp);

方法五 (此方法比较绕 不推荐)

核心思路:
1. 定义一个新空数组 接收去重后的值
2. 双层for循环遍历数组
3. 里层循环第i+1个值和外层循环的第i个值进行比较,
4. 如果相等存入i+1个值,  里层循环将 i++   再次循环判断  
 var arr=[1,2,1,3,4,4,5,8];
        var temp = [];
        for(var i = 0;i<arr.length;i++){
            for(var j = i+1;j<arr.length;j++){
                if(arr[i]===arr[j]){
                    i++;
                    // j=i;

                }
            }
            temp.push(arr[i]);
        }
        
        console.log(temp);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值