gpt4 book ai didi

javascript - 如何通过在 JS 中对消息进行分组来推送到子数组?

转载 作者:行者123 更新时间:2023-12-02 21:29:21 24 4
gpt4 key购买 nike

我不太确定应该如何命名这个问题,但我会尝试解释我的问题。目前我有一个 PHP 数组,其中包含一些条目。

Array
(
[0] => stdClass Object
(
[sender_id] => 0
[message] => Test
[created_at] => 2020-03-12 16:26:23
)

[1] => stdClass Object
(
[sender_id] => 0
[message] => Hello
[created_at] => 2020-03-12 13:47:47
)
)

我需要的是一种按created_at日期对每个条目进行分组的方法,以便我的结果如下所示:

Array
(
[2020-03-12] => Array
(
[0] => stdClass Object
(
[sender_id] => 0
[message] => Test
[created_at] => 2020-03-12 16:26:23
)

[1] => stdClass Object
(
[sender_id] => 0
[message] => Hello
[created_at] => 2020-03-12 13:47:47
)
)

)

为了达到这个目的,我用 PHP 完成了这个:

$grouped = [];

foreach ( $messages as $message ) {
$created_at_date = date( 'Y-m-d', strtotime( $message->created_at ) );
$grouped[ $created_at_date ][] = $message;
}

但是现在我遇到了一个问题,所以我决定在 JS 中完成这个任务。首先,我在 PHP 中对数组进行编码,并将其设置为 <script> 内的变量。标签:

<script>
let messages = <?= ! empty( $messages ) ? json_encode( $messages ) : '[]' ?>;
</script>

现在我收到了很多消息,但它们还没有分组。因为我需要尊重时区,所以我只能将它们分组在我知道客户端时区的 JS 中。我已经完成了时区的操作,但现在我无法像 PHP 那样对消息进行分组。这是我尝试过的:

let messages = [ {
sender_id: "0",
message: "Test",
created_at: "Thu Mar 12 2020 17:26:23 GMT+0100 (Mitteleuropäische Normalzeit)"
}, {
sender_id: "0",
message: "Hallo",
created_at: "Thu Mar 12 2020 17:26:23 GMT+0100 (Mitteleuropäische Normalzeit)"
} ];

let groupedMessages = [];

jQuery( messages ).each( function ( index, message ) {
let createdAtDate = new Date( message["created_at"] ).toLocaleDateString( navigator.language, {
day: "2-digit",
month: "2-digit",
year: "numeric"
} );

groupedMessages[createdAtDate][] = message;
} );

console.log( groupedMessages );
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

最佳答案

我认为你缺少的是:

jQuery( messages ).each( function ( index, message ) {
let createdAtDate = new Date( message["created_at"] ).toLocaleDateString( navigator.language, {
day: "2-digit",
month: "2-digit",
year: "numeric"
} );

if(typeof groupedMessages[createdAtDate] === 'undefined'){
groupedMessages[createdAtDate] = [];
}

groupedMessages[createdAtDate].push(message);
} );

关于javascript - 如何通过在 JS 中对消息进行分组来推送到子数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60660279/

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