記錄下js幾種常見的數組排序和去重的方法

冒泡排序

var arr = [1, 9, 4, 50, 49, 6, 3, 2]; function test(){ for (var i = 0; i < arr.length - 1; i++){ for (var j = i + 1; j < arr.length; j++){ var tempi = arr[i]; //獲取第一個值,並與後一個值比較
      var tempj = arr[j]; if (tempi > tempj){ arr[i] = tempj; arr[j] = tempi;//若是前一個值比後一個值大,那麼相互交換
 } } } console.log(arr); //return arr;
} test(arr); //[1, 2, 3, 4, 6, 9, 49, 50]

 

簡單粗暴的使用sort()方法進行升序、降序排列

var arr = [1, 9, 4, 50, 49, 6, 3, 2]; function test(arr) { if( arr.length < 1){ return      //若是數組長度小於1,直接返回,沒有比較的必要
 } return arr.sort(sortNum) }; function sortNum(a,b) { return a - b;   //倒序就是b-a
} test(arr) //[1, 2, 3, 4, 6, 9, 49, 50]

 

還能夠利用sort 方法的返回值,作數組的隨機排序

var arr = [1, 9, 4, 50, 49, 6, 3, 2]; function test(arr) { if(arr.length < 1) { return } return arr.sort(randomSrot) } function randomSrot(a,b) { return Math.random() > 0.5 ? -1 : 1; } test(arr); //利用Math.random()方法能夠返回0~1之間的隨機數,而後和0.5比較,來決定返回值是1仍是-1

 

數組去重的幾種方法

1.最常使用的indexOf()
var arr = [1,1,1,12,12,13,13,8,8,9,7,5]; function test(arr) { var result = []; //用來存放新數組
    var len = arr.length; for(var i = 0; i < len; i++) { if(result.indexOf(arr[i])== -1) {   //若是新數組查詢不到當前的數組成員,就把他添加進新數組
 result.push(arr[i]) } } return result; } test(arr);//[1, 12, 13, 8, 9, 7, 5]

 


2.最簡潔的方法,使用es6 的新數據類型set()
var arr = [1,1,12,12,13,13,8,8,9,7,5]; var arr2 = [...new Set(arr)];   //[1, 12, 13, 8, 9, 7, 5]
相關文章
相關標籤/搜索