2015-07-02 1 views
0

У меня есть ниже кодПолучить объекты из массива в JavaScript динамически

var obj = []; 
var statuses = []; 
var time =''; 

statuses array has some values like 
statuses[0] = [1] 
statuses[1] = [0] 
statuses[2] = [1] 
statuses[3] = [1] 

Теперь я хочу, чтобы подтолкнуть эти значения в OBJ массиве таким образом, что, когда я делаю OBJ [0] .Length он должен прийти к 5

Если я делать obj.push (([время, статусы])), что дает длину в 2

Когда я сделать obj.push(([time, statuses[0],statuses[1],statuses[2],statuses[3]])); тогда я получаю значение OBJ [0] .Length как 5

Я не хочу жестко задавать значения, такие как статусы [0], [1] в obj.push, поскольку я не уверен, сколько значений будет присутствовать в массиве статусов в будущем.

Ofcourse мой массив состояния будет расти в зависимости от значений, которые я получаю от бэкэнд. Таким образом, моя obj [0] .length должна быть числом объектов в массиве состояний + время obj. Например: если статусы имеют 8 значений, тогда мой конечный obj [0] .length должен прийти к 9

Я пробовал использовать функцию concat, но их не повезло.

Не мог бы кто-нибудь помочь мне, как я могу достичь этого динамически?

+0

Вы можете использовать цикл http://www.w3schools.com/js/js_loop_for.asp – suvroc

+0

No. цикл не работает на пути я хочу, чтобы подтолкнуть значения в obj. Я тоже пробовал, но это не решает мою цель. –

+0

Итак, вы хотите нажимать элементы в массиве 'obj' в следующем порядке:' time', 'statuses [0]', 'statuses [1]', ...? Правильно? – suvroc

ответ

1

Попробуйте это:

var temp = []; 
temp.push(time); 
foreach(function(s, i, statuses) { 
    temp.push(s); 
}); 
obj.push(temp); 
+0

Спасибо, человек! Это сработало для меня! –

0

Если я вас правильно понял, вы должны нажать ваши элементы для первого элемента из obj массива

var obj = [[]]; 
var statuses = []; 
var time =''; 

statuses array has some values like 
statuses[0] = [1]; 
statuses[1] = [0]; 
statuses[2] = [1]; 
statuses[3] = [1]; 

// === SOLUTION === 

obj[0].push(time); 
for(var i; i<statuses.length;i++) 
{ 
    obj[0].push(statuses[i]); 
} 

EDIT: Ответ на другой вопрос в комментариях Всегда старайтесь рисовать и визуализировать, как ваши массивы могут выглядеть когда вы заполняете его по вашему желанию.

var obj = []; 
var statuses = []; 
var time =''; 

for(var k=0;k<12;k++) 
{ 
    statuses[0] = [1]; 
    statuses[1] = [0]; 
    statuses[2] = [1]; 
    statuses[3] = [1]; 

    // === SOLUTION === 

    obj.push([]); 
    obj[k].push(time); 
    for(var i; i<statuses.length;i++) 
    { 
     obj[k].push(statuses[i]); 
    } 
} 
+0

Это частично правильно, но я нажимаю все эти значения в массиве obj из родителя для цикла. Таким образом, экземпляры объектов obj будут зависеть от конечной длины объекта. Теперь я почти получил то, что хотел, но когда родительский цикл работает дважды obj [0] .length становится 10, который я не хочу. –

+0

Ответ в отредактированном сообщении – suvroc