1、Set去重
- 数组中默认是可以
存储重复数据
- 实际项目中,数组中
不能存储重复数据,需要去除数组中重复的数据
- 实际项目中,
推荐使用使用set数据类型方法
let arr = [1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 1, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7];
let newArr = [...new Set(arr)];
console.log(newArr);
2、indexOf / lastIndexOf
- 创建一个新的
空数组
- 将原始数组数据写入
新数组中,写入时执行判断
- 要写入的数据新数组中
没有,再执行写入操作
方法一
let arr = [1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 1, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7];
let newArr = [];
for (let i = 0; i <= arr.length - 1; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
console.log(newArr);
let arr = [1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 1, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7];
let newArr = [];
arr.forEach(function (item) {
if (newArr.indexOf(item) === -1) newArr.push(item);
});
console.log(newArr);
方法二
let arr = [1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 1, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7];
for (let i = 0; i < arr.length; i++) {
if (arr.indexOf(arr[i], i + 1) !== -1) {
arr.splice(i, 1);
i--;
}
}
console.log(arr);
3、sort排序
- 将数组使用
sort( )方法进行排序,排序后相同的数值会相邻排序
循环遍历数组:如果当前单元存储的数值和下一个单元存储的数值相同,删除数组的下一个单元
let arr = [1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 1, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7];
arr.sort(function (a, b) {
return a - b;
});
for (let i = 0; i < arr.length; i++) {
if (arr[i] === arr[i + 1]) {
arr.splice(i + 1, 1);
i--;
}
}
console.log(arr);
4、filter过滤去重
- 将数组中数据单元存储数据是
第一次出现的数据
- 通过
filter过滤,写入到新数组中
数组.indexOf( 数据 ) ,执行结果返回值是输入的数据,第一次出现位置的索引下标
let arr = [1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 1, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7];
let newArr = arr.filter(function (item, index) {
let res = arr.indexOf(item);
console.log(
` 当前数据是${item},索引下标是${index},数值第一次出现的索引下标是${res}`
);
return arr.indexOf(item) === index;
});
console.log(newArr);
5、双重for循环完成数组去重
let arr = [1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 1, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7];
for (let i = 0; i <= arr.length - 1 - 1; i++) {
for (let j = i + 1; j <= arr.length - 1; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1);
j--;
}
}
}
console.log(arr);