2013-10-01 5 views
1

Я хотел бы иметь массив или объект, например:добавление нескольких значений массива или объекта в JavaScript

[0] 
    text:"first" 
    id: 1 
[1] 
    text:"second" 
    id: 2 
[2] 
    text:"third" 
    id: 3 

получить себе:

1: first 
2: 1 
3: second 
4: 2 
5: third 
6: 3 

вот мой Javascript с реализацией для массив на данный момент:

var numberOfQuestions = questionaireResult.numberOfQuestions; 
       var i; 
       var j; 
       var result = []; 

       for (i = 0; i < numberOfQuestions; i++) { 
        debugger; 
        var question = questionaireResult.questions[i].text; 
        var questionID = questionaireResult.questions[i].id; 


        for (j = 0; j < questionaireResult.questions[i].answers.length; j++) { 

         var text = questionaireResult.questions[i].answers[j].text; 
         var id = questionaireResult.questions[i].answers[j].id; 
         result.push(text, id); 
        } 
} 

, пожалуйста, помогите, чтобы получить структурированный массив или объект

ответ

7

Нажмите объект, содержащий данные в массив вместо:

result.push({text: text, id: id}); 
+1

идеальное решение! –

+3

@RagimsRagimovs: В следующей версии JavaScript (ECMAScript6) это будет еще более кратким: 'result.push ({text, id});' (это будет функционально идентично вышеизложенному, в основном он просто вычисляет имя свойства от имени переменной). Но у нас пока нет ES6. :-) –

0

Предполагая, что вы хотите, чтобы хранить все ответы в единый массив, вы могли бы использовать concat чтобы получить ожидаемый результат и уменьшить количество кода, в то же время:

var questions = questionaireResult.questions, 
    result = [], 
    l = questions.length, 
    i = 0; 

for (; i < l; i++) { 
    result = result.concat(
     questions[i].answers 
    ); 
} 

Вот как concat работы (mdn doc):

var a = [1, 2, 3], 
    b = [4, 5, 6]; 
a.concat(b); // [1, 2, 3, 4, 5, 6] 
Смежные вопросы