数组去重几乎是面试必问题目,如果有笔试,绝对不会少,而且一般会要求写2-3种哦
让我看看谁来看我随笔啦!!
一、双重for循环,再用splice方法实现数组去重
var arr = [1, 6, 6, 0, 7, 3, 8, 6, 9,6,6];
function unique(arr) {
for (var i = 0, len = arr.length; i < len; i++) {
for (var j = i + 1, len = arr.length; j < len; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1);
j--; // 每删除一个数j的值就减1
len--; // j值减小时len也要相应减1(减少循环次数,节省性能)
// console.log(j,len)
}
}
}
return arr;
}
console.log(unique(arr)); // 1, 6, 0, 7, 3,8, 9
二、用es6的set方法去重
let arr = [2,6,8,5,2,4,9,2,3];
function unique(arr) {
return Array.from(new Set(arr))
}
console.log(unique(arr)); // [2,6,8,5,4,9,3]
or6 console.log(...new Set(arr)); // [2,6,8,5,4,9,3]
三、用indexOf方法
var arr =[8,6,8,3,5,,2,8];
function unique(arr){
var arr1 = []; // 新建一个数组来存放arr中的值
for(var i=0,len=arr.length;i if(arr1.indexOf(arr[i]) === -1){ arr1.push(arr[i]); } } return arr1; } console.log(unique(arr)); // 8,6,3,5,2 四、用sort排序去重 var arr = [6,3,1,1,2,8,7,3,1,,2]; function unique( arr ){ arr = arr.sort(); console.log(arr); var arr1 = [arr[0]]; for(var i=1,len=arr.length;i if(arr[i] !== arr[i-1]){ arr1.push(arr[i]); } } return arr1; } console.log(unique(arr))l; // 1,,1,1,2,3,3,6,7,8 五、es6中的Map方法去重 let arr = [6,5,3,8,6,3,6,8,7] function unique(arr) { let map = new Map(); let arr1 = [] for (let i = 0, len = arr.length; i < len; i++) { if (map.has(arr[i])) { // 判断是否存在该key值 map.set(arr[i], true); } else { map.set(arr[i], false); arr1.push(arr[i]); } } return arr1; } console.log(unique(arr)); // 6,5,3,8, 就写到这里喽,下次见