JavaScript数组去重
1-Set方法
var myarr = [ 9 , 5 , 4 , 6 , 4 , 3 , 7 , 6 , 7 , 6 , 5 , 5 , 4 ]
function SetArr1 ( arr) {
let newArr = new Set ( arr)
return Array. from ( newArr)
}
console. log ( SetArr1 ( myarr) ) ;
2-定义空数组,for循环遍历比较新旧数组
var myarr = [ 9 , 5 , 4 , 6 , 4 , 3 , 7 , 6 , 7 , 6 , 5 , 5 , 4 ]
function SetArr2 ( arr) {
let newArr = [ ]
for ( let i = 0 ; i < arr. length; i++ ) {
let bool = false ;
for ( let j = 0 ; j < arr. length; j++ ) {
if ( newArr[ j] === arr[ i] ) {
bool = true
break
}
}
if ( ! bool) {
newArr. push ( arr[ i] )
}
}
newArr. sort ( )
return ( newArr)
}
console. log ( SetArr2 ( myarr) ) ;
3-将元素组排序,再与它相邻的作比较
var myarr = [ 9 , 5 , 4 , 6 , 4 , 3 , 7 , 6 , 7 , 6 , 5 , 5 , 4 ]
function SetArr3 ( arr) {
let arrs = arr. sort ( )
let newArr = [ ]
for ( let i = 0 ; i < arrs. length; i++ ) {
if ( arrs[ i] !== arrs[ i + 1 ] ) {
newArr. push ( arrs[ i] )
}
}
return ( newArr)
}
console. log ( SetArr3 ( myarr) ) ;
4-用数组的splice
var myarr = [ 9 , 5 , 4 , 6 , 4 , 3 , 7 , 6 , 7 , 6 , 5 , 5 , 4 ]
function SetArr4 ( arr) {
let newArr = arr. sort ( )
for ( let i = 0 ; i < newArr. length - 1 ; i++ ) {
for ( let j = i + 1 ; j < newArr. length; j++ ) {
if ( newArr[ i] === arr[ j] ) {
newArr. splice ( j, 1 )
j--
}
}
}
return newArr
}
console. log ( SetArr4 ( myarr) ) ;
5-用indexof判断
var myarr = [ 9 , 5 , 4 , 6 , 4 , 3 , 7 , 6 , 7 , 6 , 5 , 5 , 4 ]
function SetArr5 ( arr) {
var newArr = [ ] ;
for ( let i = 0 ; i < arr. length; i++ ) {
if ( newArr. indexOf ( arr[ i] ) === - 1 ) {
newArr. push ( arr[ i] )
}
}
return newArr
}
console. log ( SetArr5 ( myarr) ) ;
6-用filter过滤+indexof
var myarr = [ 9 , 5 , 4 , 6 , 4 , 3 , 7 , 6 , 7 , 6 , 5 , 5 , 4 ]
function SetArr6 ( arr) {
let newArr = arr. filter ( function ( value, index, self) {
return self. indexOf ( value) === index;
} )
return newArr
}
console. log ( SetArr6 ( myarr) ) ;
7-includes的for循环版
var myarr = [ 9 , 5 , 4 , 6 , 4 , 3 , 7 , 6 , 7 , 6 , 5 , 5 , 4 ]
function SetArr7 ( arr) {
let newArr = [ ]
for ( let i = 0 ; i < arr. length; i++ ) {
if ( ! newArr. includes ( arr[ i] ) ) {
newArr. push ( arr[ i] )
}
}
return newArr
}
console. log ( SetArr7 ( myarr) ) ;
8-includes的forEach和filter版
var myarr = [ 9 , 5 , 4 , 6 , 4 , 3 , 7 , 6 , 7 , 6 , 5 , 5 , 4 ]
function SetArr8 ( arr) {
let newArr = [ ]
arr. forEach ( item => {
return newArr. includes ( item) ? "" : newArr. push ( item)
} )
arr. filter ( function ( item) {
return newArr. includes ( item) ? "" : newArr. push ( item)
} )
return newArr
}
console. log ( SetArr8 ( myarr) )