![](/img/trans.png)
[英]Using bracket notation with a variable to access object property returns undefined
[英]unable to access object property through bracket variable notation
我试图通过方括号表示法访问对象属性之一,但是我无法弄清为什么它不起作用。 一如既往,非常感谢您的帮助!
js:
var dude = [
{
question1: "What is dude's favourite food?",
choices1: ["Pizza", "Pasta", "Chips", "Ice cream"],
answer1: 1
},
{
question2: "What was dude's first ever job?",
choices2: ["Staples", "Vodafone", "Costa", "Post office"],
answer2: 0
},
]
var counter = 1;
var currentQues = "question"+counter;
console.log(dude[currentQues]);
控制台返回“未定义”。 这是因为它无法通过本质上包含另一个变量(计数器)的变量(currentQues)访问属性吗?
与往常一样,我们非常感谢您的帮助。 我只是想进步的初学者。
dude
是指对象数组 。 您正在尝试在dude
上访问question1
,但是您需要在dude[0]
上访问它:
console.log(dude[0][currentQues]);
// -------------^^^
现场示例:
var dude = [ { question1: "What is dude's favourite food?", choices1: ["Pizza", "Pasta", "Chips", "Ice cream"], answer1: 1 }, { question2: "What was dude's first ever job?", choices2: ["Staples", "Vodafone", "Costa", "Post office"], answer2: 0 }, ] var counter = 1; var currentQues = "question"+counter; console.log(dude[0][currentQues]);
我强烈建议您重新考虑该数据结构。 所有对象的对象属性名称都应该相同,只是它们在数组中的位置可以区分它们:
var dude = [{ question: "What is dude's favourite food?", choices: ["Pizza", "Pasta", "Chips", "Ice cream"], answer: 1 }, { question: "What was dude's first ever job?", choices: ["Staples", "Vodafone", "Costa", "Post office"], answer: 0 }, ] dude.forEach(function(entry, index) { var num = index + 1; console.log("Question #" + num + ": " + entry.question); });
您还需要获取数组的索引。
var dude = [{ question1: "What is dude's favourite food?", choices1: ["Pizza", "Pasta", "Chips", "Ice cream"], answer1: 1 }, { question2: "What was dude's first ever job?", choices2: ["Staples", "Vodafone", "Costa", "Post office"], answer2: 0 }], counter = 1; currentQues = "question" + counter; console.log(dude[counter - 1][currentQues]); // ^^^^^^^^^^^
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.