繁体   English   中英

无法通过括号变量表示法访问对象属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM