Array中的对象

时间:2014-11-29 16:15:57

标签: javascript arrays variables object

初学者javascript程序员在这里,我试图创建一个复杂的变量。

var mainList = [{
    value : 1, 
    mainQuestion : 'Question1', 
    answerChoices : ['Answer 1', 'Answer 2', 'Answer 3']
},
{
    value : 2,
    mainQuestion : 'Question 2', 
    answerChoices : ['Answer 1', 'Answer 2']
}];

我遇到的问题是,我需要将值与答案相关联。这将是一系列问题,将问题缩小到有助于您获得正确信息以帮助解决问题的地方。

那么如何将值与答案相关联(答案1,答案2)?基本上我需要将与这些答案相关联的值添加到页面上的列表元素中,以便我可以继续进一步提问。我已经尝试将它们转换为另一个对象,但不断出现控制台错误,并且无法使其工作。

非常感谢任何帮助。

编辑:哇,你们快速而且非常有帮助。考虑到这一点已得到解决,因为我已经获得了大量信息以使其发挥作用。非常感谢你!

4 个答案:

答案 0 :(得分:1)

这本身不是JS问题,而是一般数据结构问题。您可以拥有单独的值数组,也可以在答案选择数组中包含对象:

    var mainList = [{
      value : 1, 
      mainQuestion : 'Question1', 
      answerChoices : ['Answer 1', 'Answer 2', 'Answer 3'],
      answerValues: [10,20,15]
    },{
      value : 2,
      mainQuestion : 'Question 2', 
      answerChoices : ['Answer 1', 'Answer 2']},
      answerValues: [6,8]
   ];

或作为对象:

    var mainList = [{
      value : 1, 
      mainQuestion : 'Question1', 
      answerChoices : [{name:'Answer 1',value:10,{name: 'Answer 2',value:20},{name: 'Answer 3',value:15}]
    },{
      value : 2,
      mainQuestion : 'Question 2', 
      answerChoices : [{name:'Answer 1',value:6},{name: 'Answer 2',value:8}]}
   ];

如果您有控制台错误,请将它们作为单独的q。

发布

答案 1 :(得分:0)

使answerChoices成为一个对象,而不是一个数组,其键是答案,值是您想要关联的值:

answerChoices: {
    'Answer 1': value1,
    'Answer 2': value2,
    'Answer 3': value3
}

或者它可以是一个对象数组:

answerChoices: [
    { answer: 'Answer 1', value: value1 },
    { answer: 'Answer 2', value: value2 },
    { answer: 'Answer 3', value: value3 }
]

如果您只需要根据答案查找值,则第一个是合适的。如果必须保持答案的顺序,第二个是适当的;要根据答案找到值,您必须循环搜索选项。

答案 2 :(得分:0)

您还可以通过值(实际上是问题的ID)键入您的对象,类似于以下内容:

{
  "1": {"value": 1, "mainQuestion": "Question1", "answerChoices": ['1', '2', '3']},
  "2": {"value": 2, "mainQuestion": "Question2", "answerChoices": ['4', '5', '6']}
}

答案 3 :(得分:0)

这是一个完整的HTML页面,可以满足您的需求。它在页面上的列表中显示相应的答案。

<html>

<head>
    <script>
        //Your object
        var mainList = [{
            value: 1,
            mainQuestion: 'Question1',
            answerChoices: ['Answer 1', 'Answer 2', 'Answer 3']
        }, {
            value: 2,
            mainQuestion: 'Question 2',
            answerChoices: ['Answer 1', 'Answer 2']
        }];
        //Takes in the value you want to get the answers for, 
        //and appends them in a list to the ul element on the page
        function loadAnswers(value) {
                for (i in mainList) {
                    if (mainList[i].value == value) {
                        for (j in mainList[i].answerChoices) {
                            document.getElementById("myList").innerHTML += "<li>" + mainList[i].answerChoices[j] + "</li>"
                        }
                    }
                }
            }
            //When the page loads, execute the function
        window.onload = function() {
            //Pass the value which you want to display
            //the answers for to loadAnswers.
            loadAnswers(1)
        };
    </script>
</head>

<body>
    <ul id="myList"> </ul>
</body>

</html>