javascript - 根据嵌套值按字典顺​​序对对象数组进行排序

标签 javascript json sorting

使用 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/

相关文章:

javascript - 单击任何其他项目时应该失去焦点

Javascript 将日期转换为 UTC

c# - 在 C# Web Api 中反序列化 JSON 对象时如何绑定(bind)给定属性?

javascript - 将字符串转换为js映射

c# - OrderBy 自定义比较器数字前的特定字母

javascript - 访问数据结构中的元素

javascript - 当调用内部函数时 Firebug 崩溃

php - 为什么在我们有 json_encode 时使用 CJSON 编码

javascript - 具有多个参数和随机值的 Angular 自定义排序

sorting - Powershell v2,从文件中获取特定行,排序