如何在Javascript中按键中的日期对对象排序

如何在Javascript中按键中的日期对对象排序,javascript,javascript-objects,Javascript,Javascript Objects,我的目标如下: var obj = { 2017-05-28: 76.16108625212159, 2017-02-12: 70.32183347555772, 2017-05-21: 74.21070693205216, 2017-04-23: 78.49819059107358, 2017-03-05: 73.36286201022146, 2017-04-02: 79.07588060050237, 2017-01-29: 79.07021235890568, 2017-03-26: 7

我的目标如下:

var obj = { 2017-05-28: 76.16108625212159, 2017-02-12: 70.32183347555772, 2017-05-21: 74.21070693205216, 2017-04-23: 78.49819059107358, 2017-03-05: 73.36286201022146, 2017-04-02: 79.07588060050237, 2017-01-29: 79.07021235890568, 2017-03-26: 74.79360018220122, 2017-01-22: 71.80166785183269, 2017-04-09: 72.68569443640364 };
我想按日期排序,从一月份开始,但我不知道怎么做

你认为在JS中有可能吗

提前感谢,

使用和

您不能订购对象属性。因此,您可能需要将对象转换为数组

示例

var obj={
"2017-05-28": 76.16108625212159,
"2017-02-12": 70.32183347555772,
"2017-05-21": 74.21070693205216,
"2017-04-23": 78.49819059107358,
"2017-03-05": 73.36286201022146,
"2017-04-02": 79.07588060050237,
"2017-01-29": 79.07021235890568,
"2017-03-26": 74.79360018220122,
"2017-01-22": 71.80166785183269,
"2017-04-09": 72.68569443640364
},
分拣机=对象键(obj)
.sort(函数(a,b){
返回新日期(a)-新日期(b)
})
.减少(功能(附件、项目、索引){
加速推({
日期:项目,
价值:obj[项目]
});
返回acc;
}, []);
控制台日志(分拣机)
var obj='{“2017-05-28”:“76.16108625212159”,“2017-02-12”:“70.32183347555772”,“2017-05-21”:“74.21070693205216”,“2017-04-23”:“78.49819059107358”,“2017-03-05”:“73.36286201022146”,“2017-04-02”:“79.07588060050237”,“2017-01-29”:“79.07021235890568”,“2017-03-26”:“74.79360018220122”,“2017-01-6780183”,"2017-04-09": "72.68569443640364" }';
pobject=JSON.parse(obj);
arr=对象键(POObject);
排序=arr.sort();
len=排序的长度;

对于(i=0;i对象中的键顺序不受保证。您可以将数据结构转换为如下所示的排序数组,并根据需要迭代该数组:

var obj={
"2017-05-28": 76.16108625212159,
"2017-02-12": 70.32183347555772,
"2017-05-21": 74.21070693205216,
"2017-04-23": 78.49819059107358,
"2017-03-05": 73.36286201022146,
"2017-04-02": 79.07588060050237,
"2017-01-29": 79.07021235890568,
"2017-03-26": 74.79360018220122,
"2017-01-22": 71.80166785183269,
"2017-04-09": 72.68569443640364
};
var sortedArray=Object.keys(obj.sort().map(函数(键)){
返回{
日期:,
值:obj[键]
}
});
控制台日志(Darray);
/**产出:
[
{
“日期”:“2017-01-22”,
“价值”:71.80166785183269
},
{
“日期”:“2017-01-29”,
“价值”:79.07021235890568
},
{
“日期”:“2017-02-12”,
“价值”:70.32183347555772
},
{
“日期”:“2017-03-05”,
“价值”:73.3628620102146
},
{
“日期”:“2017-03-26”,
“价值”:74.79360018220122
},
{
“日期”:“2017-04-02”,
“价值”:79.07588060050237
},
{
“日期”:“2017-04-09”,
“价值”:72.68569443640364
},
{
“日期”:“2017-04-23”,
“价值”:78.49819059107358
},
{
“日期”:“2017-05-21”,
“价值”:74.21070693205216
},
{
“日期”:“2017-05-28”,
“价值”:76.161086252112159
}
]

**/
请复制您的对象并将其放入问题中。您可以使用JSON.stringify(对象)我更新了我的帖子,thanksI从Firefox控制台复制了它]对象在Javascript中没有任何顺序,因此首先需要将其转换为数组。然后使用以及如何在排序后将其转换为对象?虽然这会给出带有顺序键的对象,但这并不能保证,更多关于它@Shivam非常感谢,更新了!@john_js_py,这是通过使用js本机函数进行排序来完成的
var obj = '{ "2017-05-28": "76.16108625212159", "2017-02-12": "70.32183347555772", "2017-05-21": "74.21070693205216", "2017-04-23": "78.49819059107358", "2017-03-05": "73.36286201022146", "2017-04-02": "79.07588060050237", "2017-01-29": "79.07021235890568", "2017-03-26": "74.79360018220122", "2017-01-22": "71.80166785183269", "2017-04-09": "72.68569443640364" }';
pobject = JSON.parse(obj);
arr = Object.keys(pobject);
sorted = arr.sort();
len = sorted.length;
for(i=0;i<len;i++)
{
val= pobject[sorted[i]];
console.log(val);
}