【发布时间】:2020-09-13 12:24:14
【问题描述】:
我有问题。在对象上应用 Object.values() 时会破坏当前顺序,有什么想法可以保持顺序吗?
我有以下几点:
console.log(formattedReads) 返回
{12: {…}, 18: {…}, 19: {…}, 20: {…}, 21: {…}, 26: {…}, 05: {…}, 06: {…}, 07: {…}, 08: {…}} // structure preview in console log, actual data below
05: {date: "05", goal_achieved: false, reads: 62, dayOfWeek: "Tuesday", nonFormattedDate: "2020-05-05"}
06: {date: "06", goal_achieved: false, reads: 15, dayOfWeek: "Wednesday", nonFormattedDate: "2020-05-06"}
07: {date: "07", goal_achieved: false, reads: 2, dayOfWeek: "Thursday", nonFormattedDate: "2020-05-07"}
08: {date: "08", goal_achieved: false, reads: 5, dayOfWeek: "Friday", nonFormattedDate: "2020-05-08"}
12: {date: "12", goal_achieved: false, reads: 10, dayOfWeek: "Tuesday", nonFormattedDate: "2020-05-12"}
18: {date: "18", goal_achieved: false, reads: 2, dayOfWeek: "Monday", nonFormattedDate: "2020-05-18"}
19: {date: "19", goal_achieved: true, reads: 0, dayOfWeek: "Tuesday", nonFormattedDate: "2020-05-19"}
20: {date: "20", goal_achieved: false, reads: 4, dayOfWeek: "Wednesday", nonFormattedDate: "2020-05-20"}
21: {date: "21", goal_achieved: false, reads: 1, dayOfWeek: "Thursday", nonFormattedDate: "2020-05-21"}
26: {date: "26", goal_achieved: false, reads: 0, dayOfWeek: "Tuesday"}
__proto__: Object
但是当我申请console.log(Object.values(formattedReadsByDay));
(10) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}] // structure preview in console log, actual data below
0: {date: "12", goal_achieved: false, reads: 10, dayOfWeek: "Tuesday", nonFormattedDate: "2020-05-12"}
1: {date: "18", goal_achieved: false, reads: 2, dayOfWeek: "Monday", nonFormattedDate: "2020-05-18"}
2: {date: "19", goal_achieved: true, reads: 0, dayOfWeek: "Tuesday", nonFormattedDate: "2020-05-19"}
3: {date: "20", goal_achieved: false, reads: 4, dayOfWeek: "Wednesday", nonFormattedDate: "2020-05-20"}
4: {date: "21", goal_achieved: false, reads: 1, dayOfWeek: "Thursday", nonFormattedDate: "2020-05-21"}
5: {date: "26", goal_achieved: false, reads: 0, dayOfWeek: "Tuesday"}
6: {date: "05", goal_achieved: false, reads: 62, dayOfWeek: "Tuesday", nonFormattedDate: "2020-05-05"}
7: {date: "06", goal_achieved: false, reads: 15, dayOfWeek: "Wednesday", nonFormattedDate: "2020-05-06"}
8: {date: "07", goal_achieved: false, reads: 2, dayOfWeek: "Thursday", nonFormattedDate: "2020-05-07"}
9: {date: "08", goal_achieved: false, reads: 5, dayOfWeek: "Friday", nonFormattedDate: "2020-05-08"}
length: 10
__proto__: Array(0)
【问题讨论】:
-
嗯,对象真的不是为了维持秩序。您可以根据日期对数组进行排序
-
对象没有顺序。 “一个 ECMAScript 对象是一个无序的属性集合”。如果顺序很重要,您想使用数组。
-
Object.values在我们使用数字键时返回一个使用数字顺序的数组。 -
那么有什么办法可以保持实际订单吗?
标签: javascript arrays sorting object