方法一
核心思路:
1. 利用 Es6 (Set数据结构)
2. 利用扩展用算符[... ]转化为数组
var arr= [ 1 , 2 , 1 , 3 , 4 , 4 , 5 , 8 ]
var num = new Set ( arr) ;
console. log ( num) ;
var ary = [ ... num]
console. log ( ary) ;
方法二
核心思路:
1. 利用sort()排序方法
2. 排序后前后比较
var arr = [ 1 , 2 , 1 , 3 , 4 , 4 , 5 , 8 , ] ;
arr = arr. sort ( )
var array = [ ] ;
for ( var i = 0 ; i < arr. length; i++ ) {
if ( arr[ i] !== arr[ i+ 1 ] ) {
array. push ( arr[ i] ) ;
}
}
console. log ( array) ;
方法三
核心思路:
1. 判断新空数组中有没有原数组的值。利用indexOf()方法 通过值查找索引,如果没有找到返回值为-1
2. 利用push()方法 将找出的值追加到新数组中
var arr= [ 1 , 2 , 1 , 3 , 4 , 4 , 5 , 8 ] ;
var temp = [ ] ;
for ( var i= 0 ; i< arr. length; i++ ) {
if ( temp. indexOf ( arr[ i] ) == - 1 ) {
temp. push ( arr[ i] )
}
}
console. log ( temp) ;
方法四
核心思路:
1. 大致方法跟方法二基本一样
2. 判断 如果当前数组中第i项在当前数组中第一次出现的索引是不是i 如果是存入新数组 不是代表重复值
var arr= [ 1 , 2 , 1 , 3 , 4 , 4 , 5 , 8 ] ;
var temp = [ ] ;
for ( var i = 0 ; i< arr. length; i++ ) {
if ( arr. indexOf ( arr[ i] ) == i) {
temp. push ( arr[ i] )
}
}
console. log ( temp) ;
方法五 (此方法比较绕 不推荐)
核心思路:
1. 定义一个新空数组 接收去重后的值
2. 双层for循环遍历数组
3. 里层循环第i+1个值和外层循环的第i个值进行比较,
4. 如果相等存入i+1个值, 里层循环将 i++ 再次循环判断
var arr= [ 1 , 2 , 1 , 3 , 4 , 4 , 5 , 8 ] ;
var temp = [ ] ;
for ( var i = 0 ; i< arr. length; i++ ) {
for ( var j = i+ 1 ; j< arr. length; j++ ) {
if ( arr[ i] === arr[ j] ) {
i++ ;
}
}
temp. push ( arr[ i] ) ;
}
console. log ( temp) ;