Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';JS中分组数组上的t循环_Javascript_Jquery - Fatal编程技术网

Javascript Can';JS中分组数组上的t循环

Javascript Can';JS中分组数组上的t循环,javascript,jquery,Javascript,Jquery,不幸的是,我的分组邮件再次出现问题。我已经从你那里得到了很多帮助,所以我感到有点不好意思再问一次——但我没有在这方面取得进展 我的第一个目标是按消息的创建日期对消息进行分组。多亏了你的帮助,这项工作现在很顺利。现在我尝试输出分组的消息,但它不起作用。我慢慢地不明白整件事了 我想先输出组键(日期),然后输出每个组中的每条消息。这就是我尝试过的: jQuery(文档).ready(函数($){ 让消息=[{ 发件人id:“0”, 消息:“测试”, 创建时间:“周四2020年3月12日17:26:2

不幸的是,我的分组邮件再次出现问题。我已经从你那里得到了很多帮助,所以我感到有点不好意思再问一次——但我没有在这方面取得进展

我的第一个目标是按消息的创建日期对消息进行分组。多亏了你的帮助,这项工作现在很顺利。现在我尝试输出分组的消息,但它不起作用。我慢慢地不明白整件事了

我想先输出组键(日期),然后输出每个组中的每条消息。这就是我尝试过的:

jQuery(文档).ready(函数($){
让消息=[{
发件人id:“0”,
消息:“测试”,
创建时间:“周四2020年3月12日17:26:23 GMT+0100(Mitteluropäische Normalzeit)”
}, {
发件人id:“0”,
留言:“你好”,
创建时间:“周四2020年3月12日17:26:23 GMT+0100(Mitteluropäische Normalzeit)”
}];
让groupedMessages=[];
$(消息)。每个(函数(索引、消息){
让createdAtDate=新日期(消息[“created_at”])。toLocaleDateString(navigator.language{
日期:“两位数”,
月份:“两位数”,
年份:“数字”
});
if(groupedMessages[createdAtDate]=“未定义的类型”){
groupedMessages[createdAtDate]=[];
}
groupedMessages[createdAtDate].push(消息);
});
日志(groupedMessages);
if(groupedMessages&&groupedMessages.length>0){
$(groupedMessages)。每个(函数(索引、消息){
console.log(index);//预期输出:12.03.2020
$(消息)。每个(函数(索引、消息){
console.log(消息[“发送者id]”);
console.log(message[“message”]);
console.log(消息[“created_at”]);
})
});
}
});

问题在于这一行

让groupedMessages=[]

您正在将
groupedMessages
设置为
数组
,而它应该是
对象
<代码>数组
在JavaScript中没有键,这就是没有输出的原因

jQuery(文档).ready(函数($){
让消息=[{
发件人id:“0”,
消息:“测试”,
创建时间:“周四2020年3月12日17:26:23 GMT+0100(Mitteluropäische Normalzeit)”
}, {
发件人id:“0”,
留言:“你好”,
创建时间:“周四2020年3月12日17:26:23 GMT+0100(Mitteluropäische Normalzeit)”
}];
让groupedMessages={};
$(消息)。每个(函数(索引、消息){
让createdAtDate=新日期(消息[“created_at”])。toLocaleDateString(navigator.language{
日期:“两位数”,
月份:“两位数”,
年份:“数字”
});
if(groupedMessages[createdAtDate]=“未定义的类型”){
groupedMessages[createdAtDate]=[];
}
groupedMessages[createdAtDate].push(消息);
});
日志(groupedMessages);
if(groupedMessages&&groupedMessages.length>0){
$(groupedMessages)。每个(函数(索引、消息){
console.log(index);//预期输出:12.03.2020
$(消息)。每个(函数(索引、消息){
console.log(消息[“发送者id]”);
console.log(message[“message”]);
console.log(消息[“created_at”]);
})
});
}
});

问题在于这一行

让groupedMessages=[]

您正在将
groupedMessages
设置为
数组
,而它应该是
对象
<代码>数组
在JavaScript中没有键,这就是没有输出的原因

jQuery(文档).ready(函数($){
让消息=[{
发件人id:“0”,
消息:“测试”,
创建时间:“周四2020年3月12日17:26:23 GMT+0100(Mitteluropäische Normalzeit)”
}, {
发件人id:“0”,
留言:“你好”,
创建时间:“周四2020年3月12日17:26:23 GMT+0100(Mitteluropäische Normalzeit)”
}];
让groupedMessages={};
$(消息)。每个(函数(索引、消息){
让createdAtDate=新日期(消息[“created_at”])。toLocaleDateString(navigator.language{
日期:“两位数”,
月份:“两位数”,
年份:“数字”
});
if(groupedMessages[createdAtDate]=“未定义的类型”){
groupedMessages[createdAtDate]=[];
}
groupedMessages[createdAtDate].push(消息);
});
日志(groupedMessages);
if(groupedMessages&&groupedMessages.length>0){
$(groupedMessages)。每个(函数(索引、消息){
console.log(index);//预期输出:12.03.2020
$(消息)。每个(函数(索引、消息){
console.log(消息[“发送者id]”);
console.log(message[“message”]);
console.log(消息[“created_at”]);
})
});
}
});

要解决您的问题,我建议您:

  • 不能对数组使用字符串键,如果需要字符串键,请使用对象
  • 不要使用$()。每个。。。因为它迭代jQuery集合,所以使用$each的内置js函数来迭代js对象或数组
  • 检查下面的解决方案

    jQuery(文档).ready(函数($){
    让消息=[{
    发件人id:“0”,
    消息:“测试”,
    创建时间:“周四2020年3月12日17:26:23 GMT+0100(Mitteluropäische Normalzeit)”
    }, {
    发件人id:“0”,
    留言:“你好”,
    创建时间:“周四2020年3月12日17:26:23 GMT+0100(Mitteluropäische Normalzeit)”
    }];
    让groupedMessages={};
    messages.forEach(函数(消息、索引){
    让createdAtDate=新日期(消息[“created_at”])。toLocaleDateString(navigator.language{