gpt4 book ai didi

javascript - 按日期对数组中的项目进行分组

转载 作者:行者123 更新时间:2023-12-01 00:32:26 25 4
gpt4 key购买 nike

我有一个包含日期和容器颜色的数组。有些垃圾箱是在同一日期收集的,所以我想对这些日期进行分组,然后得到一系列垃圾箱颜色。

我想要实现的数据结构是:

"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() 时的顺序无法保证。

我放了两种方法,一种是简单的数组,第二种是用 item 关键字作为数组中每个对象的包装器的数组。

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(key => items[key]);
const arrayWithItems = Object.keys(items).map(key => ({item: items[key]}));
console.log(array);
console.log('!!!! -------- !!!!!');
console.log(arrayWithItems);

关于javascript - 按日期对数组中的项目进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58417023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com