1.如果数组的第i项,第一次出现的位置不是在下标i,那么这个元素就是重复出现了,是下标i,说明是第一次出现,则放入新数组。
<script>
function arrNoRepeat1(arr){
let new_arr = [];
for(let i = 0,len = arr.length;i < len;i ++){
//如果数组的第i项,第一次出现的位置不是在下标i,那么这个元素就是重复出现了。
if(arr.indexOf(arr[i]) === i){
new_arr.push(arr[i]);
}
}
// console.log(new_arr);
return new_arr;
}
console.log(arrNoRepeat1([1,11,12,22,12,44,3,22,4,1,5,3]))
</script>
2.ES6新增构造函数set,利用set具有天然去重功能
<script>
let arr = [4,1,2,2,3,2,1,4,4];
//set 天然去重
let set = new Set(arr);
console.log(arr);
console.log(set);
console.log(...set);
console.log([...set]);
</script>
3.利用选择排序的原理,新数组中的每一项和旧数组中的每一项都相互比较。
let arr_new = [arr[0]];
for(let i = 0,len = arr.length;i < len;i ++){
let flag = false;
for(let j = 0,len = arr_new.length;j < len;j ++){
if(arr_new[j] === arr[i]){
flag = true;
break;
}else{
flag = false;
}
}
if(!flag){
arr_new.push(arr[i]);
}
}
console.log(arr_new);
4.遍历旧数组,然后再新数组中查找对应元素的下标,找不到对应的元素,返回-1,说明新数组中没有该元素,则放入新数组。
let arr_new = [];
for(let i = 0,len = arr.length;i < len;i ++){
//indexOf(元素) 查找对应元素的下标,找到返回找到的元素,找不到返回-1
if(arr_new.indexOf(arr[i]) === -1){
arr_new.push(arr[i]);
}
}
console.log(arr_new);