我已经看到了这个,但它并没有解决我的问题: How do I group items in an array by date?
我想按日期排列此聊天消息,我已使用 AJAX 成功从数据库中检索了该消息。
这是在控制台中检索到的聊天内容。
[
[
"Paul Abioro",
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="275746524b425f510909090967404a464e4b0944484a" rel="noreferrer noopener nofollow">[email protected]</a>",
"chester",
"Teejay",
"Hi Teejay",
"3",
"2023-04-06 17:42:54"
],
[
"Paul Abioro",
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="235342564f465b554a0d0d0d0d63444e424a4f0d404c4e" rel="noreferrer noopener nofollow">[email protected]</a>",
"chester",
"Teejay",
"How are you doing?",
"3",
"2023-04-06 17:42:58"
],
[
"Teejay Bello",
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f5819090dbdbdbdbb59298949c99db969a98" rel="noreferrer noopener nofollow">[email protected]</a>",
"Teejay",
"chester",
"I'm Fine",
"2",
"2023-04-06 19:00:42"
],
[
"Paul Abioro",
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="deaebfabb2bba6a8f0f0f0f09eb9b3bfb7b2f0bdb1b3" rel="noreferrer noopener nofollow">[email protected]</a>",
"chester",
"Teejay",
"Testing",
"3",
"2023-04-08 10:12:38"
],
[
"Teejay Bello",
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="601405054e4e4e4e20070d01090c4e030f0d" rel="noreferrer noopener nofollow">[email protected]</a>",
"Teejay",
"Chester",
"Testing what?",
"2",
"2023-04-08 10:21:09"
],
[
"Paul Abioro",
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="64140511084a4a4a4a240309050d084a070b09" rel="noreferrer noopener nofollow">[email protected]</a>",
"chester",
"Teejay",
"How can we help you?",
"3",
"2023-04-08 10:38:25"
]
]
我想做什么
[
date": "2023-04-06",
chat":[
"Paul Abioro",
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="abdbcadec7ced3dd85858585ebccc6cac2c785c8c4c6" rel="noreferrer noopener nofollow">[email protected]</a>",
"chester",
"Teejay",
"Hi Teejay",
"3",
"2023-04-06 17:42:54"
],
[
"Paul Abioro",
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="99e9f8ecf5fce1eff0b7b7b7b7d9fef4f8f0f5b7faf6f4" rel="noreferrer noopener nofollow">[email protected]</a>",
"chester",
"Teejay",
"How are you doing?",
"3",
"2023-04-06 17:42:58"
],
[
"Teejay Bello",
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e4908181cacacacaa48389858d88ca878b89" rel="noreferrer noopener nofollow">[email protected]</a>",
"Teejay",
"chester",
"I'm Fine",
"2",
"2023-04-06 19:00:42"
],
date": "2023-04-08",
chat":[
"Paul Abioro",
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="9feffeeaf3fae7e9b1b1b1b1dff8f2fef6f3b1fcf0f2" rel="noreferrer noopener nofollow">[email protected]</a>",
"chester",
"Teejay",
"Testing",
"3",
"2023-04-08 10:12:38"
],
[
"Teejay Bello",
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5f2b3a3a717171711f38323e3633713c3032" rel="noreferrer noopener nofollow">[email protected]</a>",
"Teejay",
"Chester",
"Testing what?",
"2",
"2023-04-08 10:21:09"
],
[
"Paul Abioro",
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="116170647d3f3f3f3f51767c70787d3f727e7c" rel="noreferrer noopener nofollow">[email protected]</a>",
"chester",
"Teejay",
"How can we help you?",
"3",
"2023-04-08 10:38:25"
]
]
我希望你能明白。谢谢!
最佳答案
您可以使用数组reduce
分组为一个对象,然后使用Object.values
获取缩减对象的值数组。
如果您希望对象按日期而不是数组分组,请删除 Object.values
日期部分可以使用
获取
curr[curr.length-1].split("")[0]
或
curr.at(-1).split("")[0]
如果您的环境支持 at
const a = [ [ "Paul Abioro", "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="9feffeeaf3fae7e9b1b1b1b1dff8f2fef6f3b1fcf0f2" rel="noreferrer noopener nofollow">[email protected]</a>", "chester", "Teejay", "Hi Teejay", "3", "2023-04-06 17:42:54" ], [ "Paul Abioro", "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5828392d343d202e3176767676183f35393134763b3735" rel="noreferrer noopener nofollow">[email protected]</a>", "chester", "Teejay", "How are you doing?", "3", "2023-04-06 17:42:58" ], [ "Teejay Bello", "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="3a4e5f5f141414147a5d575b535614595557" rel="noreferrer noopener nofollow">[email protected]</a>", "Teejay", "chester", "I'm Fine", "2", "2023-04-06 19:00:42" ], [ "Paul Abioro", "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6d1d0c180108151b434343432d0a000c0401430e0200" rel="noreferrer noopener nofollow">[email protected]</a>", "chester", "Teejay", "Testing", "3", "2023-04-08 10:12:38" ], [ "Teejay Bello", "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="8afeefefa4a4a4a4caede7ebe3e6a4e9e5e7" rel="noreferrer noopener nofollow">[email protected]</a>", "Teejay", "Chester", "Testing what?", "2", "2023-04-08 10:21:09" ], [ "Paul Abioro", "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6a1a0b1f06444444442a0d070b030644090507" rel="noreferrer noopener nofollow">[email protected]</a>", "chester", "Teejay", "How can we help you?", "3", "2023-04-08 10:38:25" ]]
const res = Object.values(a.reduce((acc,curr) => {
const date = curr[curr.length-1].split(" ")[0]
acc[date]??={date,chat:[]} //or acc[date] = acc[date] || {date,chat:[]}
acc[date].chat.push(curr)
return acc
},{}))
console.log(res)
关于javascript - JS中按日期排列聊天消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75965210/