可能重复:
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)。) –