2014-11-22 2 views
0

Так что я немного хитрой проблемы здесь:Объединить массивы объекта и объекта в массив

Я получаю 5x2 массивы из этой функции

for (var i = 0; i < 5; i++) { 
    var name = $('.lesson-space:eq(' + i + ') > .lesson').map(function(){return $(this).data('name');}).get(); 
    var color = $('.lesson-space:eq(' + i + ') > .lesson').map(function(){return $(this).data('color');}).get(); 
    }; 

Для каждого из этих 5 повторов я хотите поместить эти два массива в такой объект

 { 
     "name": "deutsch", 
     "color": "red" 
     }, 
     { 
     "name": "mathe", 
     "color": "blue" 
     }, 
     { 
     "name": "sport", 
     "color": "darkblue" 
     }, 
     { 
     "name": "franz", 
     "color": "yellow" 
     } 

Эти объекты должны быть помещены в массив. Таким образом, в конце концов, я хотел бы иметь 5 массивов (от первого кода пропущен) положить в один массив как этого

[ 
[ 
    ... 
],[ 
    ... 
],[ 
    ... 
],[ 
    ... 
],[ 
    ... 
] 

]

Я знаю, что это немного сложнее ...

+0

подчеркивание или ли-тир будет в состоянии помочь вам достичь этого легче .. Если вы не возражаете, добавьте зависимость. – RadleyMith

+0

также почему вы переключаетесь между объектами и структурой массива? или вы хотите поместить 5 объектов внутри массива, который находится внутри другого массива? – RadleyMith

ответ

1

Как я понял, вы хотите сделать что-то вроде этого

var res = [], 
    data = {}; 

for (var i = 0; i < 5; i++) { 

    data = $('.lesson-space:eq(' + i + ') > .lesson').map(function() { 
    var name = $(this).data('name'); 
    var color = $(this).data('color'); 

    if (!name || !color) { 
     return null; 
    } 

    return { 
     name: name, 
     color: color 
    } 
    }).get(); 

    res.push(data); 
} 
0

Этих должны работать

var mainArray = []; 

for (i = 0; i < name.length; i++) { 
    var o = {}; 
    o.name = name[i]; 
    o.color = color[i]; 
    mainArray.push([o]) 
} 
1

Я не уверен, что я правильно понял вас требование, однако я думаю, что это то, что вы ищете

var result = []; 
for (var i = 0; i < 5; i++) { 
    result.push($('.lesson-space:eq('+i+') > .lesson').get().map(function(){ 
     return { 
      name: $(this).data('name'), 
      color: $(this).data('name') 
     }; 
    })); 
} 

console.log(result); 
+0

вам нужно положить .get() в конец :) – brighthero