一、使用双重for循环,再利用数组的splice方法去重
var arr = [1,2, 5, 7, 7, 3, 2, 5, 9, 4, 5];
function quChong(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(减少循环次数,节省性能)
}
}
}
return arr;
}
console.log(quChong(arr)); // 1, 2, 5, 7, 3, 9, 4
二、利用数组的includes方法去重
var arr = [2, 0, 8, 3, 1, 5, 5, 2];
function quChong(arr) {
var arr1 = [];
for (var i = 0, len = arr.length; i < len; i++) {
if (!arr1.includes(arr[i])) { // 检索arr1中是否含有arr中的值
arr1.push(arr[i]);
}
}
return arr1;
}
console.log(quChong(arr)); // 2, 0, 8, 3, 1, 5
三、利用数组的filter方法去重
var arr = [1, 2, 7, 9, 5, 7, 4, 0, 4];
function quChong(arr) {
// 如果新数组的当前元素的索引值 == 该元素在原始数组中的第一个索引,则返回当前元素
return arr.filter(function (item, index) {
return arr.indexOf(item, 0) === index;
});
}
console.log(quChong(arr)); // 1, 2, 7, 9, 5, 4, 0
四、利用数组的indexOf方法去重
var arr = [1, 2, 7, 9, 5, 7, 4, 0, 4];
var newarr=[];
for(var i=0;i<arr.length;i++){
if(newarr.indexOf(arr[i])===-1){//满足条件,不在数组中
newarr.push(arr[i]);
}
}
console.log(newarr); //1, 2, 7, 9, 5, 4, 0
五、利用数组的sort方法去重
var arr = [1, 2, 7, 9, 5, 7, 4, 0, 4];
function quChong(arr) {
arr = arr.sort();
var newarr = [arr[0]];
for (var i = 1;i<arr.length; i++) {
if (arr[i] !== arr[i - 1]) {
newarr.push(arr[i]);
}
}
return newarr;
}
console.log(quChong(arr)); // 0, 1, 2, 4, 5, 7, 9