2.数组去重
2.1导入
2.1.1 indexOf()
返回某个指定元素的位置,没有的话,就返回 -1
let arr = [1,2,3,4,5,2];
let a = arr.indexOf(1); //0
a = arr.indexOf(3); //2
a = arr.indexOf(7); -1
console.log(a);
2.1.2splice()
方法用于添加或删除数组中的元素。 返回的是被删除的元素数组。
let arr = [1, 2, 3, 4, 5, 2];
let arr1 = arr.splice(2,1);
console.log(arr1); //[3]
console.log(arr); //[1, 2, 4, 5, 2]
let arr2 = arr.splice(0,0,1);
console.log(arr2); //[]
console.log(arr); //[1, 1, 2, 3, 4, 5, 2]
2.1.3 includes()
方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false
let arr = [1, 2, 3, 4, 5, 2];
let arr1 = arr.includes(3);
let arr2 = arr.includes(6);
console.log(arr1); //ture
console.log(arr2); //false
2.1.4push()
向数组尾部添加一个元素并且返回长度
let arr = [1, 2, 3, 4, 5, 2];
let arr1 = arr.push(3);
console.log(arr1); //7
console.log(arr); //[1, 2, 3, 4, 5, 2, 3]
2.2 Set方法
什么是set呢?
Set是ES6提供了新的数据结构 Set(集合)。它类似于数组,但成员的值都是唯一的。
let arr = [1,2,3,4,5,4,2,1];
let arr2 = new Set(arr); //返回一个类数组对象
let arr3 = [...arr2];
console.log(arr3); // [1, 2, 3, 4, 5]
// 简便写法
let arr4 = [...(new Set(arr))];
console.log(arr4); // [1, 2, 3, 4, 5]
2.3 双重for循环
let arr = [1,2,2,2,3,4,5,4,2,1];
function fun(){
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所在的元素的之后,后边的元素会自动补位
// 此前将不会比较这个元素,我们则需要在比较一次j所在的位置的元素
j--;
}
}
}
return arr;
}
console.log(fun(arr)); //[1, 2, 3, 4, 5] //[1, 2, 2, 3, 4, 5] //[1, 2, 3, 4, 5]
2.4 indexOf
let arr = [1,2,3,4,5,4,2,1];
function fun(){
let arr1 = [];
for (let i = 0; i < arr.length; i++) {
if(arr1.indexOf(arr[i]) === -1){
arr1.push(arr[i]);
}
}
return arr1;
}
console.log(fun(arr)); //[1, 2, 3, 4, 5]
2.5 includes
function fun(){
let arr1 = [];
for (let i = 0; i < arr.length; i++) {
if(!arr1.includes(arr[i])){
arr1.push(arr[i])
}
}
return arr1;
}
console.log(fun(arr)); //[1, 2, 3, 4, 5]