2013-07-24 83 views
2

我完全不熟悉JavaScript;請隨時糾正我的技術術語。數值在數組中排序後,用鍵保留鍵值?

我有一組被添加到列表中的鍵值對。該列表顯示爲下拉菜單,其中鍵的值是顯示的選項,鍵包含在HTML標記中。我的老闆要求我按字母順序排列這些顯示的值。

到目前爲止,我已經通過對象迭代與for ... in循環,並提取每個鍵的值到一個數組。我對數組進行了排序,現在我可以按字母順序將這些值附加到列表中。

什麼是保持與他們各自的值的鍵的最佳方式,所以,當我附上自己合適的鍵可以添加和值是多少?

謝謝。

短版:我如何匹配鍵回到複製所有值到一個數組後,他們的價值觀和按字母順序排序呢?數組的數組 -

回答

2

您可以在沒有單獨陣列的情況下執行此操作。只需使用比較功能(即比較器)即可。例如:

var arr = [ 
    {k: "c", v: 3}, 
    {k: "b", v: 2}, 
    {k: "d", v: 4}, 
    {k: "a", v: 1}, 
    {k: "e", v: 5} 
]; 

//sort by value 
arr.sort(function(a, b) { 
    return a.v - b.v; 
}); 

這給了你:

[ 
    { 
     "k": "a", 
     "v": 1 
    }, 
    { 
     "k": "b", 
     "v": 2 
    }, 
    { 
     "k": "c", 
     "v": 3 
    }, 
    { 
     "k": "d", 
     "v": 4 
    }, 
    { 
     "k": "e", 
     "v": 5 
    } 
] 

排序基於字符串值,你可以這樣做:

arr.sort(function(a, b) { 
    return a.v.localeCompare(b.v); 
}); 
0

不要將獨自值,排序通過2D陣列排序。

所以它看起來像

Key1 | Val1 
----------- 
Key2 | Val2 
----------- 
Key3 | Val3 

然後你排序依據的值,但你移動兩者。

排序時,它可能看起來像

Key3 | Val3 
----------- 
Key1 | Val1 
----------- 
Key2 | Val2 

然後當你指的是第一個值,你做array[0][1]和關鍵是價值你會做array[0][0]

0

您需要自定義排序功能。

var ar = [ {key: 1, value: "One"}, {key: 2, value: "Two"}, {key: 3, value: "Three"} ]; 

var sortFunction = function(kv1, kv2) { 
    return kv1.value.localeCompare(kv2.value); 
}; 

ar.sort(sortFunction);