2015-12-31 4 views
0

Я строю анкету и вопросы могут иметь несколько ответов, и мне нужно, чтобы построить массив вопрос и ответы, такие как:Как динамически добавлять объекты к свойству объекта?

{ 
    question: 'question', 
    answer: {id: 1, answers: 'answer 1'}, 
      {id: 2, answer: 'answer 2'} 
} 

Мне нужно, чтобы показать резюме вопросов и ответов, что пользователь выбрал.

Например: Вопрос: В каком из этих состояний вы жили? ответы: Алабама, Аляска, Нью-Джерси, Род-Айленд.

Результирующий объект может быть:

{ 
    question: 'Which of these states have you lived in?', 
    answer: {id: 1, answer: 'Alaska'}, 
      {id: 3, answer: 'Rhode Island'} 
} 

Как я могу идти о динамически добавлять ответы в то время как только имея вопрос показать один раз?

Я пробовал:

var questionAnswerObject = []; 
angular.forEach(answersObject, function(value, key){ 
    questionAnswerObject.push({ 
     question: question.question, 
     answer: value.answer 
    }); 
}); 

Но, конечно, это показывает вопрос дважды.

+0

Вы хотите связать ответы с вопросами динамически и ответы уже где-то хранятся? – Ismail

+1

Объяснение не слишком помогает, пожалуйста, покажите ввод и ожидаемый результат. – undefined

+0

Как выглядят ответы '' Вопрос '' и 'вопрос'? –

ответ

1

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

Так, к примеру, ваш объект ответ может выглядеть следующим образом, вместо:

var answerObject = { 
    question: 'My Question', 
    answers: [ 
    {id: 1, answer: 'first answer'}, 
    {id: 2, answer: 'second answer'} 
    ] 
} 

Или, вы можете просто сделать answers карту вопрос ид как это:

var answerObject = { 
    question: 'My Question', 
    answers: { 
    1: 'first answer', 
    2: 'second answer' 
    } 
} 

Чтобы добавить ответ в первом примере просто:

answerObject.answers.push({id: 3, answer: 'new answer'}); 

Чтобы добавить ответ в secon d пример, просто сделать:

answerObject.answers[3] = 'new answer'; 
0

Что я думаю о вас означает, что ваш конечный объект, чтобы быть как этот вопрос и массив ответов

var arrayObjQuestions = [{ 
    question: 'question', 
    answer: [{id: 1, answers: 'answer 1'}, 
      {id: 2, answer: 'answer 2'}] 
},...]; 

поэтому, если цикл броска вопросов у вас есть и добавить ответ, как следовать

arrayObjQuestions[0].answer.push({id:1, answer: "answer 1"}); 
arrayObjQuestions[0].answer.push({id:2, answer: "answer 2"}); 
arrayObjQuestions[0].answer.push({id:3, answer: "answer 3"}); 
0

лучший способ добиться этого, используйте:

var questionAnswerObject = {}; 
    var answers = []; 

    answers.push({id:1, answer: 'Alaska'}); 
    answers.push({id:3, answer: 'Rhode Island'}); 

    questionAnswerObject["question"] = 'Which of these states have you lived in?'; 
    questionAnswerObject["answer"] = answers ; 
Смежные вопросы