我在另一个文件中有JSON数据,我正在从模块文件中访问它。我正在使用循环轻松获取大量数据,但遇到了问题。当使用点符号时,它变为cars.c1.name
,但在我的示例中为cars.c+i+
..然后它停止,因为我不知道如何向其中添加.name
。
这是一个测试项目,我尝试了谷歌搜索,但这是一个特殊的问题。
JSON的片段:
"c1": {
"id": 1,
"name": "Sprinter Boxtruck",
"make": "Mercedes",
"price": "£500,000",
"topspeed": "87mph",
"vip": "false"
},
相关常量:
const carName = cars.c+i+.name; // not working
i
是我使用循环的常量。
对于我来说,预期结果将是有4个不同的对象,实际-没有抛出错误,但是它不起作用。
答案 0 :(得分:3)
这是您正在做的事情的问题:
const carName = cars.c+i+.name; // not working
要通过键获取json值,您需要在方括号中指定键。 cars是JSON对象,密钥为“ c1”,“ c2”,“ c3”等。另外,您尝试获取多个值,密钥格式为“ c” + i。
const carName = cars["c"+ i].name;
上面的代码行显示了如何正确获取JSON值。
答案 1 :(得分:1)
您需要在此处使用括号符号:
cars[`c${i}`].name
基本上,c${i}
正在创建变量名称c1, c2, c3, etc
。
更新 感谢@stevendesu,某些浏览器可能不支持反勾号运算符。所以这是使用字符串concat的相同答案:
cars["c" + i].name
答案 2 :(得分:1)
这将满足您的需求
var cars = {
"c1": {
"id": 1,
"name": "Sprinter Boxtruck",
"make": "Mercedes",
"price": "£500,000",
"topspeed": "87mph",
"vip": "false"
}
};
var i = 1;
var carName = cars['c' + i].name;
console.log(carName);