数组的去重真可谓是千变万化,下面简单的列出了几重,以供参考:,再顺便说一下使用sort( )函数的注意点:
<script> /*1.利用冒泡排序的原理,取出每一项与新数组每一项作比较,如果没有重复的,就添加到新数组中*/ function mt1 () { var newArr = []; for ( var i = 0 ; i < arr.length ; i ++ ) { var flag = true; for ( var j = 0 ; j < newArr.length ; j ++ ) { if ( arr[ i ] == newArr[ j ] ) { flag = false; } } if ( flag ) { newArr.push ( arr[ i ] ); } } return newArr; } // ----------------------------------------- /*2.把arr的每一项作为属性存储到对象中,进行判断,把不重复的添加到新数组中*/ function mt2 ( arr ) { var obj = {}; var newArr = []; for ( var i = 0 ; i < arr.length ; i ++ ) { if ( ! obj[ arr[ i ] ] ) { obj[ arr[ i ] ] = true; newArr.push ( arr[ i ] ) } } return newArr; } // ----------------------------------------------- /*3.利用indexof的方法,如果新数组中没有这一项,就把这项存储到新数组中*/ function mt3 ( arr ) { var newArr = []; for ( var i = 0 , len = arr.length ; i < len ; i ++ ) { if ( newArr.indexOf ( arr[ i ] ) == - 1 ) { newArr.push ( arr[ i ] ); } } return newArr } // ---------------------------------------------------- /*4.使用数组自带的排序方法,进行排序,若相邻的两项不相等,则存储到新数组中*/ function mt4 ( arr ) { arr.sort (); var newArr = [ arr[ 0 ] ]; for ( var i = 0 , len = arr.length ; i < len ; i ++ ) { if ( arr[ i ] != newArr[ newArr.length - 1 ] ) { newArr.push ( arr[ i ] ); } } return newArr; } // ------------------------------------------------------ /*5.ES6中通过new Set()构建的数组。不会有重复的值*/ function mt5 ( arr ) { return Array.from ( new Set ( arr ) ) } // ----------------------------------------------------- /*6.通过扩展运算符和new Set()生成*/ function mt6 ( arr ) { return [...new Set ( arr ) ] } var arr = [ 1 , 2 , 3 , 3 , 2 , 1 , 5 , 6 , 7 ]; console.log ( mt1 ( arr ) ) console.log ( mt2 ( arr ) ) console.log ( mt3 ( arr ) ) console.log ( mt4 ( arr ) ) console.log ( mt5 ( arr ) ) console.log ( mt6 ( arr ) ) // 结果全部为[1, 2, 3, 5, 6, 7] //----------------------------------------------------------- //sort var array = [ 10 , 2 , 12 , 4 , 5 , 10 , 78 , 5 , 5 , 55 , 96 , 2 ]; console.log ( array ); /*原数组*/ console.log ( array.sort () ); /*直接排序,没有效果*/ //使用sort()数字排序,你必须通过一个函数作为参数来调用。 function compare ( a , b ) { return b - a; } console.log ( array.sort ( compare ) ); /*调用函数排序*/ // [96, 78, 55, 12, 10, 10, 5, 5, 5, 4, 2, 2]
转载于:https://www.cnblogs.com/mysmalldream/p/7009338.html