javascript二維數組排序(可按指定欄位排序)

來源:互聯網
上載者:User

最簡單的二維數組排序

 代碼如下 複製代碼

<script type="text/javascript">
var aa =[["a",3],["b",4],["c",2],["d",1]];
alert(aa.sort(function(x,y){return x[1]-y[1]}))
</script>

支援中文排序

比如

 代碼如下 複製代碼

var arr = [['中', '國'], ['啊', '的'], ['哦', '的']];

arr.sort(function(x, y){

    return x[0].localeCompare(y[0]);

});

結果就會按第一列中文字的拼音排序,如果含有英文的話,預設是將英文放在前面,如果是純英文的話,會按字母順序來,大寫排在小寫後面,這樣就可以實現字串的排序了,包括中文和中英混排。至於要降序排列的話,方法與上面相同,改成return y[0].localeCompare(x[0]); 即可。

 

可以達到我們的效果了,但是如果我想指定一個欄位來進行排序呢,其它要不要排序就一個內容的需要排序,下面我自定了一個數組排序函數。

 代碼如下 複製代碼

function listSortBy(arr, field, order){
    var refer = [], result=[], order = order=='asc'?'asc':'desc', index;
    for(i=0; i<arr.length; i++){
        refer[i] = arr[i][field]+':'+i;
    }
    refer.sort();
    if(order=='desc') refer.reverse();
    for(i=0;i<refer.length;i++){
        index = refer[i].split(':')[1];
        result[i] = arr[index];
    }
    return result;
}

測試方法

var a = [
    {name:'hdj', age:28},
    {name:'yim', age:25},
    {name:'hdq', age:26}
];
a = listSortBy(a, 'age', 'desc');
/*
結果:
{name:'hdj', age:28},
{name:'hdq', age:26},
{name:'yim', age:25}
*/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.