javascript - 按属性值对 JavaScript 对象数组进行排序

标签 javascript arrays sorting lodash

<分区>

我有一个 JavaScript 对象数组。我的数组定义如下:

var myObjects = [
  { id: '1', username: 'bill.jones', active: true, createdon: '03/29/2014' },
  { id: '2', username: 'woohoo', active: true, createdon: '03/28/2014' },
  { id: '3', username: 'someuser', active: true, createdon: '03/30/2014' }
];

这个数组实际上是动态填充的。尽管如此,我仍需要按 createdon 值按升序对结果进行排序。为此,我正在尝试使用 lodash。 createdon 值代表一个日期。目前,我正在尝试以下操作:

//  ORDER BY createdOn
myObjects.sort(function (a, b) {
  var date1 = new Date(a['createdon']);
  var date2 = new Date(b['createdon']);
  return date1 < date2;
});

_.forEach(myObjects, function(result) {
  console.log(result);
});

不幸的是,在我运行这个函数后,myObjects 仍然没有排序。我做错了什么?

谢谢!

最佳答案

我刚刚浏览了 lodash 文档,也许你也是 could try sortBy

试一试:http://jsfiddle.net/3Wza8/

var myObjects = [
    { id: '1', username: 'bill.jones', active: true, createdon: new Date('03/29/2014') },
    { id: '2', username: 'woohoo', active: true, createdon: new Date('03/28/2014') },
    { id: '3', username: 'someuser', active: true, createdon: new Date('03/30/2014') }
];

myObjects = _.sortBy(myObjects, 'createdon');

_.forEach(myObjects, function (result) {
    console.log(result);
});

编辑:正如 Cookie Monster 所指出的,重要的是您的 createdon 字段是日期,而不是字符串。

关于javascript - 按属性值对 JavaScript 对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24560892/

相关文章:

java - 按对象中的值对对象进行排序

c++ - 如何从两个数组中生成一对 vector ,然后使用 CUDA/Thrust 按该对的第一个元素排序?

javascript - 使用 Javascript 渲染元素来加快页面速度?

javascript - FullCalendar v5.x 中 eventAfterAllRender 的替代选项

java - 检查字符串中每个字符是否有效

javascript - Array.push.setAnyFormatting ('red')?

javascript - 在显示 Bootstrap 弹出窗口之前执行功能?

javascript - HTML/CSS : Line up multiple Label and Input fields

c# - 在 C# 中将数组添加到字典

c - C 中的名称排序