尝试对对象数组进行排序:
mainObject = {
august: [],
december: []
}
每个数组都包含多个具有不同日期和故障单信息的对象。
mainObject = {
august: [
{ date: "2016-08-22", ticket: "parking" },
{ date: "2016-08-14", ticket: "speeding" },
{ date: "2016-08-29", ticket: "parking" }
],
december: [
{ date: "2016-12-06", ticket: "parking" },
{ date: "2016-12-30", ticket: "parking" },
]
}
我将每张票打印到我的模板中,但希望按日期按升序排序。在这种情况下,我想在将这些数据传递给模板之前对信息进行排序,如何使用Lodash或其他方式?
我尝试过各种变体:
_.sortBy(mainObject, [function(d) { return d.date; }]); // date => undefined
我也尝试过深入了解对象:
_.forEach(mainObject, function(month) {
_.sortBy(mainObject, [function(d) { return d.date; }]);
}
上述情况也不起作用。
答案 0 :(得分:1)
您可以在普通Javascript中按date
排序。
var mainObject = { august: [ { date: "2016-08-22", ticket: "parking" }, { date: "2016-08-14", ticket: "speeding" }, { date: "2016-08-29", ticket: "parking" }], december: [{ date: "2016-12-06", ticket: "parking" }, { date: "2016-12-30", ticket: "parking" }]};
Object.keys(mainObject).forEach(function (k) {
mainObject[k].sort(function (a, b) {
return a.date.localeCompare(b.date);
});
});
console.log(mainObject);

.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:0)
使用Lodash,您可以使用_.mapValues()
将august
和december
键的值转换(“映射”)到正确排序的列表中,如下所示:
const sortedMainObj = _.mapValues(mainObject, (tickets) => {
return _.sortBy(tickets, [(ticket) => ticket.date]);
});
console.log(sortedMainObj);