javascript - 按升序对对象中的日期属性进行排序 Angularjs/Javascript

标签 javascript angularjs

当我 console.log details 变量时,我得到以下结果:

详细信息:{ 1:{ 2015-2-10 : 0 2015-2-11 : 0 2015-2-12 : 0 2015-2-13 : 0 2015-2-14 : 0 2015-2-15 : 0 2015-2-16 : 0 2015-2-17 : 0 2015-2-18 : 0 2015-2-19 : 0 2015年2月2日 : 0 2015-2-20 : 0 2015-2-21 : 0 2015-2-22 : 0 2015-2-23 : 0 2015-2-24 : 0 2015-2-25 : 0 2015-2-26 : 0 2015-2-27 : 1 2015年2月28日 : 1 2015年2月3日 : 0 2015-2-4 : 0 2015-2-5 : 0 2015-2-6 : 0 2015年2月7日 : 0 2015年2月8日 : 0 2015年2月9日 : 0 2015年3月1日 : 0 } }

我想做的是按升序显示日期。所以输出将变成:

详细信息:{ 1:{ 2015年2月2日 : 0 2015年2月3日 : 0 2015-2-4 : 0 2015-2-5 : 0 2015-2-6 : 0 2015年2月7日 : 0 2015年2月8日 : 0 2015年2月9日 : 0 2015-2-10 : 0 2015-2-11 : 0 2015-2-12 : 0 2015-2-13 : 0 2015-2-14 : 0 2015-2-15 : 0 2015-2-16 : 0 2015-2-17 : 0 2015-2-18 : 0 2015-2-19 : 0 2015-2-20 : 0 2015-2-21 : 0 2015-2-22 : 0 2015-2-23 : 0 2015-2-24 : 0 2015-2-25 : 0 2015-2-26 : 0 2015-2-27 : 1 2015年2月28日 : 1 2015年3月1日 : 0 } }

我的问题:可以吗?

我的骗子是 http://plnkr.co/edit/dQO3D1Omc0o7ZH9TfeUZ?p=preview 提前致谢!

最佳答案

My question: Is it possible to do it?

从 ES2015 开始,是的,这是可能的,但这几乎总是一个坏主意。当您想要特定的顺序时,请使用数组或(在某些有限情况下)Map(Map 对象严格按照首次添加键的条目的时间排序) .

您的具体示例可能的原因是这些属性都是“自己的”属性(不是继承的),并且它们的名称不是 integer indexes 。对于该属性子集,顺序是属性添加到对象的顺序。因此,要执行您所描述的操作,您需要创建一个新对象,并按照您希望属性出现的顺序向其中添加属性。

但再次强调:不要这样做。 :-) 使用 name/value 对象数组,或 Map

<小时/>

从 ES5 开始(第一次提出这个问题时):不。您引用的结构是一个属性名称类似于 "2015-02-28" 的对象>。 JavaScript 中的对象其属性根本没有顺序。为了有顺序,你必须(目前)有一个数组。 ES6 将引入 Map 对象,这些对象是按其键的插入顺序排序的映射。但 ES5 没有这些。

这并不意味着您不能按您想要的任何顺序访问这些属性。您可以通过 Object.keys 获取属性名称数组,并且可以根据需要对数组进行排序。

关于javascript - 按升序对对象中的日期属性进行排序 Angularjs/Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29094857/

相关文章:

javascript - OCaml 相当于 javascript 'apply'

javascript - Firefox 4 是否实现任何插件架构更改

javascript - node.js 的含义是什么?

javascript - Angular 1 : Add new ID to newly created objects

angularjs - 用于 AngularJS 测试的 RobotFramework 与 Protractor

javascript - Angular 组件不会显示

javascript - 尝试学习jQuery插件开发

javascript - 项目后面的 QML Shader Effect 模糊

javascript - 尝试多次加载 Angular + 在此页面上多次包含 Google map API

javascript - 在 ng-repeat 中的特定点插入 DOM 元素的最明智方法?