一、定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放再新数组中
var arrOld = [2, 3, 5, 4, 3, 2, 6, 8, 5, 4, 6, 2]
var arrNew = []
var flag = true //假设新数组中没有相同的元素
for (var i = 0; i < arrOld.length; i++) {
flag = true
for (var j = 0; j < arrNew.length; j++) {
if (arrNew[j] == arrOld[i]) {
flag = false
}
}
if (flag) {
arrNew.push(arrOld[i])
}
}
console.log(arrNew)//[2, 3, 5, 4, 6, 8]
二、利用对象属性不能重复的特性给数组去重,如果没有该属性则存入新数组
var arrOld=[2,3,5,4,3,2,6,8,5,4,6,2]
var arrNew=[]
var newObject={}
for(var i=0;i<arrOld.length;i++){
newObject[arrOld[i]]='a'
}
for (x in newObject){
arrNew.push(Number(x));
}
console.log(arrNew)//[2, 3, 4, 5, 6, 8]
三、利用数组的indexOf下标属性来查询
var arr = [2, 5, 8, 2, 5, 6, 2, 6, 4, 1, 5];
function fn1(arr) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
return newArr;
}
console.log(fn1(arr)); //[2, 5, 8, 6, 4, 1]
四、利用数组的includes方法
includes()方法:用来判断一个数组是否包含一个指定的值,如果包含返回true,不包含返回false
var arr = [2, 5, 8, 2, 5, 6, 2, 6, 4, 1, 5];
function fn1(arr) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (!newArr.includes(arr[i])) {
newArr.push(arr[i]);
}
}
return newArr;
}
console.log(fn1(arr)); //[2, 5, 8, 6, 4, 1]
五、利用ES6的set方法
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)//[2, 3, 5, 6, 4, 1, 7]
六、利用splice方法
通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。
let arr = [12, 1, 12, 3, 1, 88, 66, 9, 66];
function fn1(arr) {
for (let i = 0; i < arr.length; i++) {
for (j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1);
j--;
}
}
}
return arr;
}
console.log(fn1(arr));//[12, 1, 3, 88, 66, 9]