可能重複:
Sorting objects in an array by a field value in JavaScript如何以數字方式對字符串數組進行排序然後按字母順序排序?
我如何排序數字對象的數組(通過ID),然後按字母順序(按名稱)?
目前的方式是提供無效的輸出。
這是我試圖通過
var items = [
{
"id": 165,
"name": "a"
},
{
"id": 236,
"name": "c"
},
{
"id": 376,
"name": "b"
},
{
"id": 253,
"name": "f"
},
{
"id": 235,
"name": "e"
},
{
"id": 24,
"name": "d"
},
{
"id": 26,
"name": "d"
}
]
排序的對象,我試圖理清
items.sort(function(a, b) {
return (a.id - b.id);
}).sort(function(a, b) {
return (a.name - b.name);
});
的方式這裏是的jsfiddle。
編輯:對不起,我的困惑,我已經被這個問題已有一段很困惑。
我試圖做到的是由最高ID先排序,然後按字母順序排序所以最後它應該看起來像:
var items = [
{
"id": 376,
"name": "b"
},
{
"id": 253,
"name": "f"
},
{
"id": 236,
"name": "c"
},
{
"id": 235,
"name": "e"
},
{
"id": 165,
"name": "a"
},
{
"id": 26,
"name": "d"
},
{
"id": 24,
"name": "d"
}
]
的dynamicSort功能可能需要您要嘗試如何在這個例子中,因爲完成,通過'id'排序第一是沒有意義的,因爲所有的'id's和'一個更好的例子名字是獨一無二的。這相當於按「name」排序。 – Bill
同意 - 你想要什麼樣的訂購語義在這裏? – Pointy
不知道你希望通過排序列表兩次來實現。而當你做'返回(a.name - b.name)'你試圖從另一個字符串中減去一個字符串。不會發生。 (你可能想改用[localeCompare](http://www.tutorialspoint.com/javascript/string_localecompare.htm)。) –