对对象数组进行排序的简单函数

新手上路,请多包涵

我想创建一个(非匿名)函数,按键 name 按字母顺序对对象数组进行排序。我只编写直接的 JavaScript,所以框架对我一点帮助也没有。

 var people = [
    {'name': 'a75', 'item1': false, 'item2': false},
    {'name': 'z32', 'item1': true,  'item2': false},
    {'name': 'e77', 'item1': false, 'item2': false}
];

原文由 John 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 327
2 个回答

这个怎么样?

 var people = [
{
    name: 'a75',
    item1: false,
    item2: false
},
{
    name: 'z32',
    item1: true,
    item2: false
},
{
    name: 'e77',
    item1: false,
    item2: false
}];

function sort_by_key(array, key)
{
 return array.sort(function(a, b)
 {
  var x = a[key]; var y = b[key];
  return ((x < y) ? -1 : ((x > y) ? 1 : 0));
 });
}

people = sort_by_key(people, 'name');

这允许您指定要对数组进行排序的键,这样您就不会局限于硬编码名称排序。它将用于对所有共享用作键的属性的任何对象数组进行排序。我相信这就是您要找的东西?

这是一个 jsFiddle:http: //jsfiddle.net/6Dgbu/

原文由 David Brainer 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用 .sort 函数对 数组( [...] ) 进行排序:

 var people = [
    {'name': 'a75', 'item1': false, 'item2': false},
    {'name': 'z32', 'item1': true,  'item2': false},
    {'name': 'e77', 'item1': false, 'item2': false},
];

var sorted = people.sort(function IHaveAName(a, b) { // non-anonymous as you ordered...
    return b.name < a.name ?  1 // if b should come earlier, push a to end
         : b.name > a.name ? -1 // if b should come later, push a to begin
         : 0;                   // a and b are equal
});

原文由 pimvdb 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题