使用 JavaScript,我想知道如何根据每个对象中的字符串值按字典顺序对对象数组进行排序。
考虑:
[
{
"name" : "bob",
"count" : true
"birthday" : 1972
},
{
"name" : "jill",
"count" : false
"birthday" : 1922
},
{
"name" : "Gerald",
"count" : true
"birthday" : 1920
}
]
如何按名称的字母顺序对数组进行排序?
名称值是用户名,所以我想保留字母大小写。
最佳答案
var obj = [...];
obj.sort(function(a,b){return a.name.localeCompare(b.name); });
请注意,这不会考虑大小写(因此它会将所有以大写字母开头的名称排在所有以小写字母开头的名称之前,即 "Z" < "a"
),因此您可能会发现添加 toUpperCase()
是相关的在那里。
你也可以让它更通用:
function sortFactory(prop) {
return function(a,b){ return a[prop].localeCompare(b[prop]); };
}
obj.sort(sortFactory('name')); // sort by name property
obj.sort(sortFactory('surname')); // sort by surname property
如果将比较器传递给工厂,则更加通用...
关于javascript - 根据嵌套值按字典顺序对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8539934/