2014-09-02 79 views
2

我有一個包含對數組的數組。看起來是這樣的:排序多維數組 - 數組(不是對象)

[[Jack],[1]], 
[[Larry],[0]], 
[[Veronica],[0]], 
[[Sam],[1]], 
[[Bob],[0]], 
[[David],[1]] 

我需要進行排序,以便它們按字母順序排序AZ但任何人與值1至上

排序後,它應該是這樣的:

[[David],[1]] 
[[Jack],[1]], 
[[Sam],[1]], 
[[Bob],[0]], 
[[Larry],[0]], 
[[Veronica],[0]], 

我有這兩種排序功能,但我需要將它們合併。把它們一個接一個地弄亂整理。

q.sort(function(a, b){ //sort alphabetically 
     if(a[0].toLowerCase() < b[0].toLowerCase()){ 
      return -1; 
     }else if(a[0].toLowerCase() > b[0].toLowerCase()){ 
      return 1; 
     }else{ 
      return 0; 
     } 
    }); 

q.sort(function(a, b){return b[1] - a[1]}); //sort value 1/0 
+2

沒有數組和對象之間的太大的區別,你覺得。 – Bergi 2014-09-02 19:43:42

+0

有很多名字和很多數字。我只是想節省處理時間。 – 2014-09-02 19:45:00

+0

不要過早地優化您的代碼。我鼓勵你改用JSON對象。它會更清晰,並且它會使您的排序比較函數更容易編寫。 – kevin628 2014-09-02 19:46:12

回答

1

這樣的事情怎麼樣?

b.sort(function(a, b) { 
    if (a[1] == 1 && b[1] == 0) return -1; 
    if (a[1] == 0 && b[1] == 1) return 1; 
    if(a[0].toLowerCase() < b[0].toLowerCase()){ 
     return -1; 
    }else if(a[0].toLowerCase() > b[0].toLowerCase()){ 
     return 1; 
    }else{ 
     return 0; 
    }}); 
+0

我試圖修改它有點......它不是很正確的......不知道爲什麼。 Gimmie一秒鐘。 – 2014-09-02 19:49:52

+0

在上面添加了一張圖片來向你展示我所看到的 – 2014-09-02 19:53:35

+1

它似乎對我有用,唯一的區別是我的數組數組不是數組的第三級深度。 ''大衛「,1],[」傑克「,1],[」山姆「,[1]],[」拉里「,0],[」鮑勃「,0] [」維羅妮卡「 ,0]]' – Shriike 2014-09-02 19:53:41

3

更優雅的解決方案:

q.sort(function (a, b) { 
    return b[1] - a[1] || a[0].localeCompare(b[0]); 
}); 

說明:

  1. b[1] - a[1]:這是從第二函數的表達式;如果是0(虛假),則評估表達式的第二部分;
  2. a[0].localeCompare(b[0])localeCompare()與第一個函數類似(加上它支持語言環境)。
+0

檢查出來...像緊湊 – 2014-09-02 20:20:44

+0

喜歡它,效果很好。 – 2014-09-02 20:32:23

0

使用本:

b.sort(function(a, b) { 
    if (a[1] == 1 && b[1] == 1 || a[1] == 0 && b[1] == 0) { 
     if (a[0].toLowerCase() < b[0].toLowerCase()) { 
      return -1; 
     } else if (a[0].toLowerCase() > b[0].toLowerCase()) { 
      return 1; 
     } 
    } else if (a[1] == 1 && b[1] == 0 || a[1] == 0 && b[1] == 1) { 
     return a[1] - b[1]; 
    } 
}); 
+2

你不需要第三個'return'的條件。 – Pavlo 2014-09-02 20:19:06