代码求助:创建含products数组的JSON对象无输出结果
代码错误排查与修复
我帮你一步步找出代码里的问题,并且给出对应的修复方案:
1. JSON对象语法错误
你在products数组闭合后多写了一个分号,这会直接导致JavaScript语法解析失败:
// 错误写法 var data = { "products": [{ "p_id": 111, "p_name": "p_one", "p_cost": 100 }]; }; // 正确写法:去掉数组后面的多余分号 var data = { "products": [{ "p_id": 111, "p_name": "p_one", "p_cost": 100 }] };
2. for循环语法错误
for循环的标准结构是for(初始化表达式; 条件表达式; 增量表达式),你的代码不仅用逗号替代了分号分隔,还缺失了增量部分:
// 错误写法 for (var i = 0, i < data.products.length) { // 正确写法:用分号分隔三个表达式,添加i++作为循环增量 for (var i = 0; i < data.products.length; i++) {
3. 变量名拼写错误
你定义了存储产品价格的变量_cost,但拼接字符串时误写成了_pcost,这会触发"_pcost is not defined"的报错:
// 错误写法 results = _pid + "." + _pname + "." + _pcost + "<br>"; // 正确写法:使用正确的变量名_cost results += _pid + "." + _pname + "." + _cost + "<br>";
4. 结果字符串覆盖问题
当前代码每次循环都会把results重置为当前产品的信息,应该用+=运算符来累加所有产品的内容:
// 错误写法:覆盖原有内容 results = _pid + "." + _pname + "." + _cost + "<br>"; // 正确写法:累加新内容到结果字符串 results += _pid + "." + _pname + "." + _cost + "<br>";
5. 未添加足够的产品对象
你提到需要包含5个产品对象,但当前products数组里只有1个,补充后完整的数组如下:
var data = { "products": [ { "p_id": 111, "p_name": "p_one", "p_cost": 100 }, { "p_id": 112, "p_name": "p_two", "p_cost": 200 }, { "p_id": 113, "p_name": "p_three", "p_cost": 300 }, { "p_id": 114, "p_name": "p_four", "p_cost": 400 }, { "p_id": 115, "p_name": "p_five", "p_cost": 500 } ] };
修复后的完整代码
var data = { "products": [ { "p_id": 111, "p_name": "p_one", "p_cost": 100 }, { "p_id": 112, "p_name": "p_two", "p_cost": 200 }, { "p_id": 113, "p_name": "p_three", "p_cost": 300 }, { "p_id": 114, "p_name": "p_four", "p_cost": 400 }, { "p_id": 115, "p_name": "p_five", "p_cost": 500 } ] }; var results = ""; for (var i = 0; i < data.products.length; i++) { var obj = data.products[i]; var _pid = obj.p_id; var _pname = obj.p_name; var _cost = obj.p_cost; results += _pid + "." + _pname + "." + _cost + "<br>"; } console.log(results);
运行这段代码后,你就能在控制台看到5个产品的信息累加输出了。
内容的提问来源于stack exchange,提问作者Ammir Das
相关产品推荐
相关产品推荐

