如何使用JavaScript循环创建嵌套对象数组?
解决方法
你的代码存在两个关键问题:
columns被声明为对象({}),但你使用了数组的push()方法,对象没有这个方法,会直接报错。- 你只把日期作为值存入,没有构建需求中包含
number和url的嵌套对象结构。
方案1:每个日期对应单个条目(日期唯一时适用)
如果任务数据中每个日期唯一,可以直接将日期作为对象的键,对应包含 number 和 url 的子对象:
var columns = {}; for (var i = 0; i < parsed_data.tasks.length; i++) { var task = parsed_data.tasks[i]; // 以日期为键,赋值包含number和url的对象 columns[task.date] = { number: task.number, url: task.url }; } console.log(columns);
方案2:每个日期对应多个条目(处理重复日期)
如果存在重复日期,直接赋值会覆盖之前的条目。此时可以让每个日期对应一个数组,存储该日期下的所有任务:
var columns = {}; for (var i = 0; i < parsed_data.tasks.length; i++) { var task = parsed_data.tasks[i]; var date = task.date; // 如果该日期还未初始化,先创建空数组 if (!columns[date]) { columns[date] = []; } // 将当前任务的number和url存入数组 columns[date].push({ number: task.number, url: task.url }); } console.log(columns);
注意:你需求示例中的JSON结构存在重复键,这不符合JSON规范,实际运行会导致后一个键覆盖前一个。方案2是处理重复日期的合理方式。
内容的提问来源于stack exchange,提问作者drago
相关产品推荐
相关产品推荐

