簡體   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