我们要将一个数组里面的元素去重,核心算法是:
新建一个空数组,将旧数组里面元素一一去查询新数组,如果该元素在新数组里没有出现过,那我们就将其添加到新数组里,否则就不添加。
那么我们怎么判断新数组里面有没有存在该元素呢?
我们可以通过数组索引的方式来查询。
借助 indexOf() 这个方法来实现。
数组索引
方法名 | 说明 | 返回值 |
---|---|---|
indexOf() | 在数组中查找给定元素的第一个索引号(可能存在多个相同的元素) | 如果存在,返回索引号;不存在,则返回-1 |
lastIndexOf() | 在数组中查找给定元素的最后一个索引号(可能存在多个相同的元素) | 如果存在,返回索引号;不存在,则返回-1 |
var arr = [1,4,2,1,5];
console.log(indexOf(1)); //0
console.log(lastIndexOf(1)); //3
console.log(indexOf(3)); //-1
console.log(lastIndexOf(3)); //-1
数组去重
我们由数组索引可知,数组.indexOf(元素);该元素不存在于该数组中,将返回-1。
则可以写出以下数组去重代码 :
var arr = [1,4,5,7,1,8,7,6];
var arr2 = [];
for(i = 0;i < arr.length;i++){
if(arr2.indexOf(arr[i]) == -1){
arr2.push(arr[i]);
}
}
console.log(arr2); //[1,4,5,7,8,6]