gpt4 book ai didi

javascript - 按某个元素后跟另一个元素对对象数组进行分组

转载 作者:行者123 更新时间:2023-11-30 19:28:15 27 4
gpt4 key购买 nike

我想建立一个聊天列表,其中按未读消息分组,后跟日期(纪元格式)

const myData = {
"4072b701-a799-4951-be60-3f2d461bf482": {
"id": "4072b701-a799-4951-be60-3f2d461bf482",
"from": "BOT",
"to": "b740849b-7553-4ddc-945e-b986aff854bb",
"message": "Glad to connect!",
"timestamp": "2019-06-18T04:30:56.188Z",
"isOwner": false,
"isRead": true
},
"1b2c0e15-a3b3-4994-8fda-e38e3cdc8d05": {
"id": "1b2c0e15-a3b3-4994-8fda-e38e3cdc8d05",
"from": "BOT",
"to": "b740849b-7553-4ddc-945e-b986aff854bb",
"message": "We have offices in San Jose, CA, Malaysia, Singapore and India",
"timestamp": "2019-06-18T04:30:58.189Z",
"isOwner": false,
"isRead": true
},
"9613038a-b78a-4afe-aa2d-71d1a8292ec7": {
"id": "9613038a-b78a-4afe-aa2d-71d1a8292ec7",
"from": "BOT",
"to": "b740849b-7553-4ddc-945e-b986aff854bb",
"message": "Ask away, or select from below options",
"timestamp": "2019-06-18T04:30:58.190Z",
"isOwner": false,
"isRead": true
},
"d409a190-6278-490b-9bf6-f3489b0a1cb5": {
"id": "d409a190-6278-490b-9bf6-f3489b0a1cb5",
"from": "b740849b-7553-4ddc-945e-b986aff854bb",
"to": "BOT",
"message": "this",
"timestamp": "2019-06-18T04:32:55.356Z",
"isOwner": true,
"isRead": true
},
"acfc975f-f522-472d-a1f4-18a737da00f2": {
"id": "acfc975f-f522-472d-a1f4-18a737da00f2",
"from": "BOT",
"to": "b740849b-7553-4ddc-945e-b986aff854bb",
"message": "Glad to connect!",
"timestamp": "2019-06-20T22:50:29.714Z",
"isOwner": false,
"isRead": false
},
"d409a190-6278-490b-9bf6-f3489b0a1cb5": {
"id": "d409a190-6278-490b-9bf6-f3489b0a1cb5",
"from": "b740849b-7553-4ddc-945e-b986aff854bb",
"to": "BOT",
"message": "this",
"timestamp": "2019-06-21T04:32:55.356Z",
"isOwner": true,
"isRead": false
},
};
const newObj = Object.keys(myData)
.map(objId => myData[objId])
.reduce((acc, value) => {
const date = value.timestamp;
if (!acc[date]) {
acc[date] = [];
}
acc[date].push(value);

return acc;
}, {});

console.log(newObj);

如您所见,我还没有正确排序时间戳。所以我错过了对 isRead 标志进行分组,我真的想要纪元格式的日期变量并且只存储日期

我希望这样的输出

{
read: {
1489520157124: [{...}], // this is dummy epoch time
1489520157154: [{...}]
},
unread: {
1489520157124: [{...}], // this is dummy epoch time
1489520157154: [{...}]
}
}

最佳答案

readunread 属性添加到accumulator 对象,并将对象推送到适当的属性。

使用 Date.parse() 将时间戳转换为纪元时间。

const myData = {
"4072b701-a799-4951-be60-3f2d461bf482": {
"id": "4072b701-a799-4951-be60-3f2d461bf482",
"from": "BOT",
"to": "b740849b-7553-4ddc-945e-b986aff854bb",
"message": "Glad to connect!",
"timestamp": "2019-06-18T04:30:56.188Z",
"isOwner": false,
"isRead": true
},
"1b2c0e15-a3b3-4994-8fda-e38e3cdc8d05": {
"id": "1b2c0e15-a3b3-4994-8fda-e38e3cdc8d05",
"from": "BOT",
"to": "b740849b-7553-4ddc-945e-b986aff854bb",
"message": "We have offices in San Jose, CA, Malaysia, Singapore and India",
"timestamp": "2019-06-18T04:30:58.189Z",
"isOwner": false,
"isRead": true
},
"9613038a-b78a-4afe-aa2d-71d1a8292ec7": {
"id": "9613038a-b78a-4afe-aa2d-71d1a8292ec7",
"from": "BOT",
"to": "b740849b-7553-4ddc-945e-b986aff854bb",
"message": "Ask away, or select from below options",
"timestamp": "2019-06-18T04:30:58.190Z",
"isOwner": false,
"isRead": true
},
"d409a190-6278-490b-9bf6-f3489b0a1cb5": {
"id": "d409a190-6278-490b-9bf6-f3489b0a1cb5",
"from": "b740849b-7553-4ddc-945e-b986aff854bb",
"to": "BOT",
"message": "this",
"timestamp": "2019-06-18T04:32:55.356Z",
"isOwner": true,
"isRead": true
},
"acfc975f-f522-472d-a1f4-18a737da00f2": {
"id": "acfc975f-f522-472d-a1f4-18a737da00f2",
"from": "BOT",
"to": "b740849b-7553-4ddc-945e-b986aff854bb",
"message": "Glad to connect!",
"timestamp": "2019-06-20T22:50:29.714Z",
"isOwner": false,
"isRead": false
},
"d409a190-6278-490b-9bf6-f3489b0a1cb5": {
"id": "d409a190-6278-490b-9bf6-f3489b0a1cb5",
"from": "b740849b-7553-4ddc-945e-b986aff854bb",
"to": "BOT",
"message": "this",
"timestamp": "2019-06-21T04:32:55.356Z",
"isOwner": true,
"isRead": false
},
};
const newObj = Object.values(myData)
.reduce((acc, value) => {
const date = Date.parse(value.timestamp);
const prop = value.isRead ? "read" : "unread";
if (!acc[prop][date]) {
acc[prop][date] = [];
}
acc[prop][date].push(value);

return acc;
}, {read: {}, unread: {}});

console.log(newObj);

关于javascript - 按某个元素后跟另一个元素对对象数组进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56695284/

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