初学者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)?基本上我需要将与这些答案相关联的值添加到页面上的列表元素中,以便我可以继续进一步提问。我已经尝试将它们转换为另一个对象,但不断出现控制台错误,并且无法使其工作。
非常感谢任何帮助。
编辑:哇,你们快速而且非常有帮助。考虑到这一点已得到解决,因为我已经获得了大量信息以使其发挥作用。非常感谢你!答案 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>