簡體   English   中英

在javascript中2級排序數組

[英]sort array on 2 level in javascript

我有這個數組:
var temp_arr = ["4~3", "4~6", "4~1", "4~8", "2~7", "2~0", "2~4", "7~5", "7~9", "7~7", "0~2", "0~0", "4~4", "4~5", "4~7"];

我想用價值 ,這是tild ,然后用值是tild 進行排序

我在互聯網上發現很少的解決方案,但無法正常工作。

var temp_arr = ["4~3", "4~6", "4~1", "4~8", "2~7", "2~0", "2~4", "7~5", "7~9", "7~7", "0~2", "0~0", "4~4", "4~5", "4~7"];

temp_arr.sort(function(a,b){
    return Number(a.split('~')[0]) - Number(b.split('~')[0]);
});

    temp_arr.sort(function(a,b){
        var a_ = Number(a.split('~')[1]);
        var b_ = Number(b.split('~')[1]);
        var a2 = Number(a.split('~')[0]);
        var b2 = Number(b.split('~')[0]);
        if(a2 != b2)
        {
            return 0;
        }
        else if(a_ != b_)
        {
            return a_ > b_;
        }
    });
    console.log(temp_arr);


這是jsFiddle

您可以使用以下代碼:

var temp_arr = ["4~3", "4~6", "4~1", "4~8", "2~7", "2~0", "2~4", "7~5", "7~9", "7~7", "0~2", "0~0", "4~4", "4~5", "4~7"];

for(var i = 0; i < temp_arr.length; i++)
{
    for(var it = 0; it < temp_arr.length-1; it++)
    {
        var it1 = temp_arr[it];
        var it2 = temp_arr[it+1];
        var right1 = Number(it1.split('~')[1]);
        var right2 = Number(it2.split('~')[1]);
        var left1 = Number(it1.split('~')[0]);
        var left2 = Number(it2.split('~')[0]);
        if(left1 > left2 || (right1 > right2 && left1 == left2))
        {
            var temp = temp_arr[it];
            temp_arr[it] = temp_arr[it+1];
            temp_arr[it+1] = temp;
        }
    }
}
console.log(temp_arr);

它使用的是冒泡排序的修改版本。

小提琴

編輯:使它短一點

如果您想使用較短的代碼,可以使用

var temp_arr = ["4~3", "4~6", "4~1", "4~8", "2~7", "2~0", "2~4", "7~5", "7~9", "7~7", "0~2", "0~0", "4~4", "4~5", "4~7"];

temp_arr.sort(function(a,b){
   var t = Number(a.split('~')[0]) - Number(b.split('~')[0]);
   if (t == 0)
       return Number(a.split('~')[1]) - Number(b.split('~')[1]);
   else 
       return t;
});

console.log(temp_arr);

希望對丹有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM