方法一? js原生,设置flag状态给数组去重
// 原数组
var arr = [1, 2, 2, 3, 3, 3, 4, 5];
// 新数组
var arrNew = [];
for (var i = 0; i < arr.length; i++) {//遍历原数组
var flag = true;
for (var j = 0; j < arrNew.length; j++) {//遍历新数组
if (arrNew[j] == arr[i]) {
flag = false;//如果新数组里已经有了原数组里的元素,把flag改成false
}
}
if(flag){
arrNew.push(arr[i])//如果flag是true即 arrNew[j] != arr[i] ,把该arr[i]push进新数组里
}
}
console.log(arrNew);//结果:[1,2,3,4,5]
方法二? 利用对象属性不能重复的特性的特性给数组去重
//first
var arr = [1, 2, 2, 3, 3, 3, 4, 5];
var arrNew = [];
var obj = {};
for (var i = 0; i < arr.length; i++) {
obj[arr[i]] = 666;
}
for (var x in obj) {
arrNew.push(x)
}
console.log(arrNew);
//second
var arr = [1, 2, 2, 3, 3, 3, 4, 5];
var arrNew = [];
var obj = {};
for(var i=0;i<arr.length;i++){
if(!obj[arr[i]]){
obj[arr[i]]=666;
arrNew.push(arr[i])
}
}
console.log(arrNew);
方法三? 利用 indexOf() 方法进行数组去重
var arr = [1, 2, 2, 3, 3, 3, 4, 5];
var arrNew = [];
for (var i = 0; i < arr.length; i++) {
if (arrNew.indexOf(arr[i]) == -1) {
arrNew.push(arr[i])
}
}
console.log(arrNew);
方法四? 利用set结构中的参数不可重复的特点进行数组去重
var arr = [1, 2, 2, 3, 3, 3, 4, 5];
console.log(Array.from(new Set(arr)));