利用javaScript实现数组去重
利用双重for循环 核心思路:对比前一项和后一项 如果前一项和后一项相等 则删除后一项 并修正数组下标
function unique ( arr ) {
for ( var i = 0 ; i < arr. length; i++ ) {
for ( var j = i + 1 ; j < arr. length; j++ ) {
if ( arr[ i] === arr[ j] ) {
arr. splice ( j, 1 )
j--
}
}
}
return arr
}
var arr = [ 11 , 22 , 32 , 21 , 11 , 22 , 56 ]
console. log ( unique ( arr) ) ;
利用indexOf方法或者lastindexOf方法进行数组去重 核心思路:创建一个新的空数组 遍历数组 判断数组元素是否存在于新的数组中 若不存在,则进行插入
function unique1 ( arr ) {
let newArry = [ ]
for ( var i = 0 ; i < arr. length; i++ ) {
if ( newArry. indexOf ( arr[ i] ) === - 1 ) {
newArry. push ( arr[ i] )
}
}
return newArry
}
var arr1 = [ 11 , 22 , 32 , 21 , 11 , 22 , 56 ]
console. log ( unique1 ( arr1) ) ;
利用includes方法进行数组去重 核心思路:创建一个新的空数组 遍历数组 判断数组元素是否包含在新的数组中 若不存在,则进行插入
function unique2 ( arr ) {
let newArry = [ ]
for ( var i = 0 ; i < arr. length; i++ ) {
if ( ! newArry. includes ( arr[ i] ) ) {
newArry. push ( arr[ i] )
}
}
return newArry
}
var arr2 = [ 11 , 22 , 32 , 21 , 11 , 22 , 56 ]
console. log ( unique2 ( arr2) ) ;
利用forEach方法和indexOf方法/lastindexOf方法/includes方法 进行数组去重 核心思路:创建一个新的空数组 利用forEach函数遍历数组 判断数组元素是否存在于新的数组中 若不存在 则进行插入
function unique3 ( arr ) {
let newArry = [ ]
arr. forEach ( function ( item ) {
if ( ! newArry. includes ( item) ) {
newArry. push ( item)
}
} )
return newArry
}
var arr3 = [ 11 , 22 , 32 , 21 , 11 , 22 , 56 ]
console. log ( unique3 ( arr3) ) ;
利用filter方法 和 indexOf方法/lastindexof方法/includes方法 进行数组去重 核心思路:创建一个新的空数组 利用filter方法遍历数组 判断数组元素是否存在于新的数组 若不存在 进行插入
function unique4 ( arr ) {
let newArry = [ ]
return arr. filter ( function ( item ) {
if ( newArry. indexOf ( item) === - 1 ) {
return newArry. push ( item)
}
} )
}
var arr4 = [ 11 , 22 , 32 , 21 , 11 , 22 , 56 ]
console. log ( unique4 ( arr4) ) ;
利用set集合进行去重 核心思路:set集合内部的成员是不会重复的
var arr5 = [ 11 , 22 , 32 , 21 , 11 , 22 , 56 ]
var set = new Set ( arr5)
console. log ( Array. from ( set) ) ;
console. log ( [ ... set] ) ;