javascript - JS中按日期排列聊天消息

标签 javascript jquery ajax

我已经看到了这个,但它并没有解决我的问题: 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/

相关文章:

javascript - 如何默默地记录东西而不干扰正常开发,直到我需要它

javascript - 以编程方式从 Google Chart 获取系列的颜色

php - Ajax 调用不返回任何内容

javascript - JQGrid是免费的吗?

javascript - 获取 AJAX 请求并仅创建一次 div

php - 如何在 IE 中使用 AJAX

javascript - 根据表ID获取DataTable设置

javascript - 如何在jquery中动画后删除属性

jquery-ui - jquery ui 可排序 ('refresh' )不起作用!

javascript - jstree 委托(delegate)中意外创建多个实例