js数组去重

方法一:双层for循环

var arr=[1,2,1,4,5,6,6,4,4,'lucky','lucky']
// 方法一; for循环
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]){
                // 删除重复的元素 从下标为j的元素开始删除1项
                arr.splice(j,1);
                j--;
            }
        }
    }
}
unique(arr)
console.log(arr);//[ 1, 2, 4, 5, 6, 'lucky' ] splice()修改原数组长度

方法二:indexOf()

var arr=[1,2,1,4,5,6,6,4,4,'lucky','lucky']
function unique(arr) {
    // 构造一个空数组
    let newArr = [];
    for(let i = 0;i < arr.length;i++){
        // 判断新数组中是否有这个元素,indexOf()在数组中没找到指定元素则返回-1
        if(newArr.indexOf(arr[i]) === -1){
            // 新数组中没有指定元素则将该元素添加进新数组
            newArr.push(arr[i])
        }
    }
    return newArr;
}
console.log(unique(arr));//[ 1, 2, 4, 5, 6, 'lucky' ]

方法三:lastIndexOf()

//lastIndexOf()与indexOf()用法和作用类似,前者从当前下标开始往前检索,后者则往后检索
var arr=[1,2,1,4,5,6,6,4,4,'lucky','lucky']
function unique(arr) {
    let newArr = [];
    for(let i = 0;i < arr.length;i++){
        if(newArr.lastIndexOf(arr[i]) === -1){
            newArr.push(arr[i])
        }
    }
    return newArr;
}
console.log(unique(arr));//[ 1, 2, 4, 5, 6, 'lucky' ]

方法四:forEach()+indexOf()

var arr=[1,2,1,4,5,6,6,4,4,'lucky','lucky']
function unique(arr) {
    let newArr = [];
    arr.forEach(function(item){
        if(newArr.indexOf(item) === -1){
            newArr.push(item)
        }
    });
    return newArr;
}
console.log(unique(arr));//[ 1, 2, 4, 5, 6, 'lucky' ]

方法五:filter()+indexOf()

//fliter()+indexOf()
var arr=[1,2,1,4,5,6,6,4,4,'lucky','lucky']
function unique(arr) {
    let newArr = [];
    return arr.filter(function(item){
        if(newArr.indexOf(item) === -1)
        return newArr.push(item)
    })
    // return newArr;
}
console.log(unique(arr));//[ 1, 2, 4, 5, 6, 'lucky' ]

方法六:includes()  or  filter()+includes()

includes()方法用于判断字符串是否包含指定的子字符串,如果找到匹配的字符串则返回 true,否则返回 false。

//includes()
var arr=[1,2,1,4,5,6,6,4,4,'lucky','lucky']
function unique(arr) {
    let newArr = [];
    for(let i = 0;i<arr.length;i++){
        if(newArr.includes(arr[i]) === false){
            newArr.push(arr[i]);
        }
    }
    return newArr;
}
console.log(unique(arr));//[ 1, 2, 4, 5, 6, 'lucky' ]


//filter()+includes()
var arr=[1,2,1,4,5,6,6,4,4,'lucky','lucky']
function unique(arr) {
    let newArr = [];
    return arr.filter(function(item){
        return newArr.includes(item)?'':newArr.push(item)
    })
}
console.log(unique(arr));//[ 1, 2, 4, 5, 6, 'lucky' ]

方法七:Set()去重

Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。

var arr=[1,2,1,4,5,6,6,4,4,'lucky','lucky']
let mySet=new Set(arr);
// 用...操作符,将 Set 转 Array
console.log([...mySet]);//[ 1, 2, 4, 5, 6, 'lucky' ]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值