2014-11-29 2 views
0

Начинающий 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)? В принципе, мне нужно, чтобы значение, связанное с этими ответами, добавлялось к элементу списка на странице, чтобы я мог продолжить дальнейшие вопросы. Я попытался превратить их в другой объект, но продолжаю получать консольные ошибки и не могу заставить его работать.

Любая помощь очень ценится.

Редактировать: Ничего себе, вы, ребята, быстры и очень полезны. Подумайте об этом, так как мне было предоставлено много информации, чтобы заставить это работать. Спасибо огромное!

ответ

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.

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 } 
] 

Первое является подходящим, если вам нужно только искать значения на основе ответа. Второй подход подходит, если порядок ответов должен быть сохранен; чтобы найти значение на основе ответа, вам придется искать варианты с помощью цикла.

0

Вы также можете ввести свой объект по значению (по существу, идентификатор, вопроса), что-то вдоль линий:

{ 
    "1": {"value": 1, "mainQuestion": "Question1", "answerChoices": ['1', '2', '3']}, 
    "2": {"value": 2, "mainQuestion": "Question2", "answerChoices": ['4', '5', '6']} 
} 
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>

Смежные вопросы