【发布时间】:2018-08-01 11:47:34
【问题描述】:
我有这个对象数组,我需要对其进行修改以使渲染更容易。我使用了类似问题中提到的一些代码: Group array of object nesting some of the keys with specific names
这是我的数组和代码
function groupAndMap(events, Year, Month, predic){
return _.map(_.groupBy(events,Year), (obj,key) => ({
[Year]: key,
[Month]: (predic && predic(obj)) || obj
}));
}
const items = [
{
"Year": 2018,
"Month": 7,
"Day": 2,
"Title": "event1",
"StartDate": "2018-07-02T10:00:00.000Z",
"EndDate": "2018-07-02T11:00:00.000Z"
}, {
"Year": 2018,
"Month": 8,
"Day": 31,
"Title": "event2",
"StartDate": "2018-07-31T10:00:00.000Z",
"EndDate": "2018-08-02T11:00:00.000Z"
}
];
function groupAndMap(items, itemKey, childKey, predic){
return _.map(_.groupBy(items,itemKey), (obj,key) => ({
[itemKey]: key,
[childKey]: (predic && predic(obj)) || obj
}));
}
var result = groupAndMap(items,"Year","Months",
arr => groupAndMap(arr,"Month", "Days"));
var jsonvalue = JSON.stringify(result);
document.write(jsonvalue);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.js"></script>
我希望我的输出采用以下格式
[{
"Year": "2019",
"Months": [{
"Month": "8",
"Days": [{
"Day": "31",
"Events": [{
"Year": 2019,
"Month": 8,
"Day": 31,
"Title": "event3",
"StartDate": "2018-07-31T10:00:00.000Z",
"EndDate": "2018-08-02T11:00:00.000Z"
}]
}]
}]
}]
我应该如何修改代码以获得这个结果?
【问题讨论】:
标签: javascript arrays format grouping lodash