按日期对数组中的项目分组
i有一个包含日期和bin颜色的数组。在同一日期收集了一些垃圾箱,因此我想将这些日期分组,然后使用垃圾箱颜色数组。
我希望实现的数据结构是:
"items": [
"item": {
"date": "2019-10-18T00:00:00.000Z",
"bins": [{
"bin": "Blue"
}, {
"bin": "Grey"
}]
},
...
]
数据数组:
var dateList = [{
"date": "2019-10-18T00:00:00.000Z",
"bin": "Blue"
}, {
"date": "2019-11-08T00:00:00.000Z",
"bin": "Blue"
}, {
"date": "2019-11-01T00:00:00.000Z",
"bin": "Green"
}, {
"date": "2019-11-22T00:00:00.000Z",
"bin": "Green"
}, {
"date": "2019-10-18T00:00:00.000Z",
"bin": "Grey"
}, {
"date": "2019-11-01T00:00:00.000Z",
"bin": "Grey"
}]
这里是我到目前为止的代码,它已经存在了,但是没有创建items.item,而是创建了items [date],但是我不知道最后一部分:
var items = {};
for(var i = 0; i < dateList.length; i++) {
if(!items[dateList[i].date]) {
items[dateList[i].date] = {};
items[dateList[i].date].date = dateList[i].date;
items[dateList[i].date].bins = [];
items[dateList[i].date].bins.push( { "bin": dateList[i].bin });
} else {
items[dateList[i].date].bins.push( { "bin": dateList[i].bin });
}
}
这将产生项目[日期]
"items": {
"2019-10-18T00:00:00.000Z": {
"date": "2019-10-18T00:00:00.000Z",
"bins": [{
"bin": "Blue"
}, {
"bin": "Grey"
}]
},
"2019-11-08T00:00:00.000Z": {
"date": "2019-11-08T00:00:00.000Z",
"bins": [{
"bin": "Blue"
}]
},
"2019-11-01T00:00:00.000Z": {
"date": "2019-11-01T00:00:00.000Z",
"bins": [{
"bin": "Green"
}, {
"bin": "Grey"
}]
},
"2019-11-22T00:00:00.000Z": {
"date": "2019-11-22T00:00:00.000Z",
"bins": [{
"bin": "Green"
}]
}
}
如果我可以像items.item那样构造它,我会更喜欢它
"items": [
"item": {
"date": "2019-10-18T00:00:00.000Z",
"bins": [{
"bin": "Blue"
}, {
"bin": "Grey"
}]
},
"item": {
"date": "2019-11-08T00:00:00.000Z",
"bins": [{
"bin": "Blue"
}]
},
"item": {
"date": "2019-11-01T00:00:00.000Z",
"bins": [{
"bin": "Green"
}, {
"bin": "Grey"
}]
},
"item": {
"date": "2019-11-22T00:00:00.000Z",
"bins": [{
"bin": "Green"
}]
}
]
感谢
回答如下:要获取对象数组,可以将其用作以下代码。请注意,不能保证使用Object.keys()
时的顺序。
const items = {
"2019-10-18T00:00:00.000Z": {
"date": "2019-10-18T00:00:00.000Z",
"bins": [{
"bin": "Blue"
}, {
"bin": "Grey"
}]
},
"2019-11-08T00:00:00.000Z": {
"date": "2019-11-08T00:00:00.000Z",
"bins": [{
"bin": "Blue"
}]
},
"2019-11-01T00:00:00.000Z": {
"date": "2019-11-01T00:00:00.000Z",
"bins": [{
"bin": "Green"
}, {
"bin": "Grey"
}]
},
"2019-11-22T00:00:00.000Z": {
"date": "2019-11-22T00:00:00.000Z",
"bins": [{
"bin": "Green"
}]
}
}
const array = Object.keys(items).map(item => items[item]);
console.log(array)