求助:如何为JavaScript数组的details对象添加AverageTimeSpent变量?
如何给JavaScript数组中的details对象添加AverageTimeSpent属性
看起来你在给卡车数据的details对象添加AverageTimeSpent属性时遇到了几个语法和逻辑问题,我帮你梳理并修正了代码,一起来看看:
原代码的主要问题
- 语法错误:你的
Truck_data数组里存在缺失逗号的问题,导致数组无法正确解析 - 循环访问错误:外层循环遍历
Truck_data时,应该通过Truck_data[j].details访问对应日期的details数组,而不是直接用Truck_data.details;另外循环变量的使用也有混淆(比如先console.log(i)但i还没定义) - 属性添加方式错误:details里的每一项是对象,不是数组,不能用
push方法添加属性,应该直接给对象赋值
修正后的完整代码
// 修正语法错误后的原始数据 var Truck_data = [ { date: "15/12/19", details: [ { driver_name: "ram", truck_number: "KA 03 2132", distance_travelled: 50, orders_delivered: 45, orders_missed: 10 }, { driver_name: "raju", truck_number: "KA 03 2354", distance_travelled: 30, orders_delivered: 15, orders_missed: 1 } ] }, { date: "12/12/19", details: [ { driver_name: "ram", truck_number: "KA 03 2132", distance_travelled: 50, orders_delivered: 65, orders_missed: 20 }, { driver_name: "raju", truck_number: "KA 03 2354", distance_travelled: 30, orders_delivered: 65, orders_missed: 34 } ] } ]; // 遍历每个日期的数据 for (var j = 0; j < Truck_data.length; j++) { // 获取当前日期对应的details数组 var detailsArray = Truck_data[j].details; // 遍历每个司机的详情对象 for (var i = 0; i < detailsArray.length; i++) { // 生成随机的平均耗时(你可以替换成实际计算逻辑) var avgTime = Math.random() * 100; // 给当前司机对象添加AverageTimeSpent属性 detailsArray[i].AverageTimeSpent = avgTime; } } // 打印验证结果 console.log(Truck_data);
关键修改点说明
- 修复数组语法:给每个对象之间、details数组里的每个对象都补上了逗号,确保数组能被JavaScript正确解析
- 优化循环逻辑:改用普通的for循环(也可以用更简洁的forEach),明确访问每个日期下的details数组,避免了变量混淆的问题
- 正确添加属性:直接给details里的每个对象赋值
AverageTimeSpent属性——因为对象是引用类型,修改后会直接反映到原数组中
更简洁的forEach写法(现代JavaScript风格)
如果你更倾向于使用更简洁、易读的写法,可以用forEach遍历数组:
Truck_data.forEach(dayData => { dayData.details.forEach(driverDetails => { // 这里可以替换成你的实际平均耗时计算逻辑 driverDetails.AverageTimeSpent = Math.random() * 100; }); });
内容的提问来源于stack exchange,提问作者Aravind Subramaniam
相关产品推荐
相关产品推荐

