这也是一道比较一道经典的面试题,在一般面试的过程中会考察你的JS功底咋样,能说出两种、三种那都还好,能说出五种、六种那自然更佳,反正多多益善嘛。接下来我为大家提供了以下几种方案。供大家参考,可能不会很全面,但是有参考价值
1.
双重暴力for循环当 arr[i]的值和arr[j]的值相等的时候,就让splice('从第J项开始',删除一个值)以此类推达到去重的目的
//先定义一个数组
var arr=[1,2,2,3,4,1,1,5,7,7,8,8,9,9,6,6,6,5]
//双重for循环
for(let i = 0;i < arr.length; i++){
for(let j = i+1;j < arr.length; j++){
//如果数组中有两个数相等,这里用三位运算符
if(arr[i] === arr[j]){
//在第j个元素开始删除,删除1个元素。splice方法,还可以对多个对象中的某个或某几个对象删除
arr.splice(j,1);
j--;
}
}
}
2.
indexOf查找通过数组的indexOf API对每一项进行判断 indexOf在没有找到的情况下会返回-1 然后再把新的数组进行添加
let arr = [1,1,2,2,3,3,4,4,5,5]
function unqier(arr){
let newArr = []
arr.forEach(item => {
if(newArr.indexOf(item) === -1){
newArr.push(item)
}
});
console.log(newArr);
}
unqier(arr)
3.
includes方法去重这个方法跟上一个indexOf差不多includes()方法在查找每一项的时候假如没查到就返回false
let arr = [1,1,2,2,3,3,4,4,5,5]
function unqier(arr){
let newArr = []
arr.forEach(item => {
if(!newArr.includes(item)){
newArr.push(item)
}
});
console.log(newArr);
}
unqier(arr)
set数组最最最最简单的数组去重 两行代码搞定
let arr = [1,2,34,1,2,34]
let newArr = [...new Set(arr)]
还有很多的方法就不列举啦,其实日常开发中用set去重是很好的一种方式,通过掌握更多的去重方式可以增强对API的运用与理解也是很不错的一件事情。^_^