我正在尝试按日期、月份和星期对对象数组进行排序
myArray : [
{'name' : 'example1', 'date' : '2011-01-01'},
{'name' : 'example1', 'date' : '2011-01-02'},
{'name' : 'example1', 'date' : '2011-02-02'},
{'name' : 'example1', 'date' : '2011-02-15'},
{'name' : 'example1', 'date' : '2011-02-17'},
{'name' : 'example1', 'date' : '2012-01-01'},
{'name' : 'example1', 'date' : '2012-03-03'},
]
我想要这样的结果:
result : [{
'2011': { // Year 2011
'01': { // January
'01' : [ // First week of January
{'name' : 'example1', 'date' : '2011-01-01'},
{'name' : 'example1', 'date' : '2011-01-02'},
]
},
'02' : { // February
'01' : [ // First week of February
{'name' : 'example1', 'date' : '2011-02-02'},
],
'03' : [
{'name' : 'example1', 'date' : '2011-02-15'},
{'name' : 'example1', 'date' : '2011-02-17'},
]
}
},
'2012' : { // Year 2012
'01' : { // January
'01': [ // First week of January
{'name': 'example1', 'date': '2012-01-01'}
]
},
'03': { // March
'01' : [ // First week of March
{'name' : 'example1', 'date' : '2012-03-03'},
]
}
}
}]
我将 lodash.groupBy
与 return getISOWeek(obj.date)
或 return getMonth(obj.date)
或 return 一起使用getYear(obj.date)
.
我设法按年和月、年和周对数据进行排序,但我不知道如何同时对这三个进行排序。
谢谢你的帮助
最佳答案
使用 lodash 是正确的选择。
var myArray = [
{'name' : 'example1', 'date' : '2011-01-01'},
{'name' : 'example1', 'date' : '2011-01-02'},
{'name' : 'example1', 'date' : '2011-02-02'},
{'name' : 'example1', 'date' : '2011-02-15'},
{'name' : 'example1', 'date' : '2011-02-17'},
{'name' : 'example1', 'date' : '2012-01-01'},
{'name' : 'example1', 'date' : '2012-03-03'},
];
var orderedByMonths = _.groupBy(myArray, function(element) {
return element.date.substring(0,7);
});
var orderedByYears = _.groupBy(orderedByMonths, function(month) {
return month[0].date.substring(0,4);
});
console.log(orderedByYears);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
关于Javascript - 按年、月和日分组的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43701245/