JS面试题之数组去重

  • 使用 indexof() 方法

注:indexof() 方法对大小写敏感

  1. indexOf() 方法会返回元素在数组中第一次出现时的下标,然后做对比。
function unique(arr){
    let newArr = [];
    for(let i = 0; i < arr.length; i++){
    //arr.indexOf(arr[i]) 会返回元素在arr中第一次出现的下标,所以如果等于i
    //说明元素是第一次出现,然后push到newArr,不相等说明重复了就不管他
        if(arr.indexOf(arr[i]) === i){
            newArr.push(arr[i]);
        }
    }
    return newArr;
}
console.log(unique([2,45,66,23,'a',2,66,'a',54,23,2,1])) //[2, 45, 66, 23, "a", 54, 1]
复制代码

2.indexOf() 方法如果要检索的字符串值没有出现,则该方法返回 -1

function unique2(arr){
    let newArr=[];   
    for(var i=0;i<arr.length;i++){
	if(newArr.indexOf(arr[i])===-1){  //判断它里面有没有这个元素
            newArr.push(arr[i]);
        }	
    }
    return newArr;
}
console.log(unique2([4,5,2,3,3,4,6]));
复制代码
  • ES6新增构造函数 Set

Set 中的元素只会出现一次,即 Set 中的元素是唯一的。具有天然去重功能

let arr = [4,1,2,2,3,2,1,4,4];
let set = new Set(arr);
console.log(set);//{4, 1, 2, 3}
console.log(...set);//4 1 2 3
console.log([...set]);//[4, 1, 2, 3]
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享