1、双if去重
// 数组[2,3,5,4,3,2,6,8,5,4,6,2]去重,返回一个新数组[2,3,5,4,6,8](用函数)
/*
思路:
1、创建一个新数组
2、遍历旧数组
3、将旧数组中的元素push到新数组中
4、如果新数组中有相同的元素就不push
5、遍历新数组
*/
// 1、
var arrOld = [2, 3, 5, 4, 3, 2, 6, 8, 5, 4, 6, 2]
var arrNew = []
var flag = true //假设新数组中没有相同的元素
// 2、
for (var i = 0; i < arrOld.length; i++) {
flag = true
// 5、
for (var j = 0; j < arrNew.length; j++) {
if (arrNew[j] == arrOld[i]) {
flag = false
}
}
// 4、
if (flag) {
// 3、
arrNew.push(arrOld[i])
}
}
console.log(arrNew)
2、findIndex法
var arr = [1, 5, 8, 2, 4 ,5, 6, 4, 3, 8, 1]
function newArrFn (arr) {
let newArr = []
for(let i = 0;i<arr.length;i++){
newArr.indexOf(arr[i]) === -1 ? newArr.push(arr[i]) : newArr
};
return newArr
}
console.log(newArrFn(arr));
3、
let arr = [2, 3, 5, 6, 4, 1, 3, 1, 4, 7, 5, 2, 3, 4, 6, 1, 2, 3]
let setArr = new Set(arr)
let arrNew = Array.from(setArr)
console.log(arrNew)
4、include:利用includes 检查新数组是否包含原数组的每一项,如果不包含,就push进去
var arr = [2, 3, 5, 6, 4, 1, 3, 1, 4, 7, 5, 2, 3, 4, 6, 1, 2, 3]
function newArrFn (arr) {
let newArr = []
for(let i = 0;i<arr.length;i++){
newArr.includes(arr[i]) ? newArr: newArr.push(arr[i])
};
return newArr
}
console.log(newArrFn(arr));
5、对象去重:利用对象属性名不能重复的特点。
var arr = [2, 3, 5, 6, 4, 1, 3, 1, 4, 7, 5, 2, 3, 4, 6, 1, 2, 3]
function newArrFn (arr) {
let newArr = []
let obj = {}
for(let i = 0;i<arr.length;i++){
if (!obj[arr[i]]) {
newArr.push(arr[i])
obj[arr[i]] = 1
} else {
obj[arr[i]] ++
}
};
return newArr
}
console.log(newArrFn(arr));
6、splice方法
var arr = [1, 2, 3,4 ,5,6, 4, 3, 8, 1]
function newArrFn (arr) {
for(let i = 0; i<arr.length; i++){
for(let j = i + 1; j<arr.length; j++){
if (arr[i] === arr[j]) {
arr.splice(j,1);
j--
}
};
}
return arr
}
console.log(newArrFn(arr));