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