Array.sort();
sort()方法可以傳入一個函數作為參數,然后依據該函數的邏輯,進行數組的排序。默認的是ascii碼排序。
一般用法:(數組元素從小大進行排序)
var a = [9, 6, 5, 7, 11, 52, 15]; a.sort(function(return a-b;));
sort()方法,接收了一個函數作為參數時,排序主要根據傳入函數的返回值是否大於0進行排序。
1)當 a - b < 0 時, 則 a 元素排在 b 元素的前面。
2) 當 a - b = 0 時, a , b 元素的位置不變。
3) 當 a - b > 0 是, 則 b 元素排在 a 元素的前面。
sort()還可以按照多個字段進行排序。debug了下,是按照冒泡法進行的排序。不過速度還是蠻快的,快200個對象,不到1S就排序完成,不影響用戶的體驗。
mysort(a,b){ if(a.age !== b.age){ return a.age < b.age ? -1 : 1; } else if(a.name !== b.name){ return a.name < b.name ? -1 : 1; } else{ return a.id - b.id; } } arr = [ {name:"alie",age:20,id:20011}, {}, ... ]; arr.sort(mysort);
有個稍微要注意的就是最后一個else是用大括號括起來的。我調試的時候java寫的習慣了,最后一個else不加大括號,只是最后一行加了縮進。排序出的結果總是不對,加了大括號后的順序就是對的了。