在对数组有一些操作时,有时我们需要对在数组里重复的元素进行处理,把他们删除,把数组重复的元素去掉。这时候我们就会对数组去重,而对数组去重有很多种方法,以下将对7种方法进行了解。
一、利用for循环
使用for循环对每一位数组元素遍历,将其与后面的数组元素一一比对是否重复,加入重复便将后面与它重复的数组元素去掉。当此数组元素比对结束之后,便会到下一位数组元素进行此操作。
function NoRepeat (arr) {
for (let i = 0; i < arr.length-1; i++) {
for (let j = i+1; j < arr.length; j++) {
if (arr[i]==arr[j]) {
arr.splice(j,1);//splice是把所要删元素截取出来。
j--; //把空下标删除
}
}
}
return arr;
};
var arr = [1,2,1,3,5,3];
console.log(NoRepeat(arr)); //输出:[1,2,3,5]
二、利用indexOf
利用indexOf对数组元素的查找,套上for循环,是indexOf循环查找数组重复条件的元素,如果返回这一下标元素在数组中没有重复的结果返回-1,则将它加入新数组。
var arr = [1,2,1,3,5,3];
function noRepeat2(arr) {
let newArr=[];
for (let i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i])===-1) {
newArr.push(arr[i])
}
}
return newArr;
}
console.log( noRepeat2(arr)); //输出:[1,2,3,5]
三、利用lastIndexOf
和使用indexOf同理,使用方法也同理。
var arr = [1,2,1,3,5,3];
function noRepeat3(arr) {
let newArr = []
for (let i = 0; i < arr.length; i++) {
if (newArr.lastIndexOf(arr[i])===-1) {
newArr.push(arr[i])
}
}
return newArr;
}
console.log( noRepeat3(arr)); //输出:[1,2,3,5]
四、利用includes
使用includes判断数组结果返回是布尔值,如果结果返回不为真,则在新数组添加这个元素,最后组成不重复去重后的数组。
var arr = [1,2,1,3,5,3];
function noRepeat4(arr) {
let newArr=[];
for (let i = 0; i < arr.length; i++) {
if (!newArr.includes(arr[i])) {
newArr.push(arr[i])
}
}
return newArr;
}
console.log( noRepeat4(arr)); //输出:[1,2,3,5]
五、利用forEach
迭代数组,过滤数组符合所创的函数的条件的元素。
var arr = [1,2,1,3,5,3];
function noRepeat5(arr) {
let newArr=[];
arr.forEach(function (item) {
if (newArr.indexOf(item)===-1) {
newArr.push(item)
}
})
return newArr;
}
console.log( noRepeat5(arr)); //输出:[1,2,3,5]
六、使用filter
函数中使用到三目运算符,如元素被includes处理的结果为假,将把此元素添加在没有重复元素的新数组中。
var arr = [1,2,1,3,5,3];
function noRepeat6(arr) {
let newArr = []
return arr.filter(function (item) {
return newArr.includes(item)?"":newArr.push(item)
})
}
console.log( noRepeat6(arr)); //输出:[1,2,3,5]
七、利用set
通过set处理创建的数组,其数组里的元素都是唯一的。
var arr = [1,2,1,3,5,3];
let set = new Set(arr);
console.log(Array.from(set)); //输出:[1,2,3,5]
数组去重的方法有多种多样,不仅限于本文所提到的这七种方法,还有很多方法可以使用.......