不需要开辟新的数组空间,可以实现去重
< script>
var arr= [ 1 , 2 , 3 , 4 , 5 , 1 , 3 , 4 , 6 , 7 ] ;
for ( let i= 0 ; i< arr. length- 1 ; i++ ) {
let item= arr[ i] ,
ary= arr. slice ( i+ 1 ) ;
if ( ary. indexOf ( item) > - 1 ) {
arr. splice ( i, 1 ) ;
i-- ;
}
}
console. log ( arr) ;
< / script>
< script>
var arr= [ 1 , 2 , 3 , 4 , 5 , 1 , 3 , 4 , 6 , 7 ] ;
for ( let i= 0 ; i< arr. length- 1 ; i++ ) {
let item= arr[ i] ,
ary= arr. slice ( i+ 1 ) ;
if ( ary. indexOf ( item) > - 1 ) {
arr[ i] = null ;
}
}
arr= arr. filter ( item=> item!== null ) ;
console. log ( arr) ;
< / script>
键值对的方式
< script>
var arr= [ 1 , 2 , 3 , 4 , 5 , 1 , 3 , 4 , 6 , 7 ] ;
let obj= { } ;
for ( let i= 0 ; i< arr. length; i++ ) {
let item= arr[ i] ;
if ( typeof obj[ item] !== "undefined" ) {
arr[ i] = arr[ arr. length- 1 ] ;
arr. length-- ;
i-- ;
}
obj[ item] = item;
}
obj= null ;
console. log ( arr) ;
< / script>
使用双for循环进行去重
< script>
let arr= [ 1 , 2 , 2 , 3 , 4 , 5 , 1 , 2 , 4 , 5 , 2 , 4 ] ;
for ( let i= 0 ; i< arr. length- 1 ; i++ ) {
let item= arr[ i] ;
for ( let j= i+ 1 ; j< arr. length; j++ ) {
if ( item== arr[ j] ) {
arr[ j] = arr[ arr. length- 1 ] ;
arr. pop ( ) ;
j-- ;
}
}
}
console. log ( arr) ;
< / script>
ES6中使用set
< script>
let arr= [ 1 , 2 , 2 , 3 , 4 , 5 , 1 , 2 , 4 , 5 , 2 , 4 ] ;
arr= Array. from ( new Set ( arr) ) ;
console. log ( arr) ;
< / script>
数组排好序,进行去重
< script>
var arr= [ 1 , 2 , 3 , 4 , 5 , 1 , 3 , 4 , 6 , 7 ] ;
arr. sort ( ( a, b) => a- b) ;
arr= arr. join ( '@' ) + '@' ;
let reg= /(\d+@)\1*/g ;
ary= [ ] ;
arr. replace ( reg, ( value, group1) => {
ary. push ( parseFloat ( group1) ) ;
} )
console. log ( ary) ;
< / script>