2012-12-05 14 views
1

這是我的代碼: 我有兩個數組[[lab,val],它們的值將被動態地傳遞給對象。 k爲數組來保存對象我想創建一個動態的對象數組,並檢索它們

var lab = ["1","2","3",4]; 
var val = ["sa","ma","pa","da"]; 
var k = []; 
for(var i=0; i<4; i++) { 
    data[i] = {};    
    data[i].label = lab[i]; 
    data[i].value = val[i]; 
    k.push(data[i]) ; 
} 

document.write(k.data[0]); 
document.write(" " + k.data[0] + "<br />"); 
+2

你是什麼讓你不想要? – qw3n

+0

'data'變量來自哪裏?只需使用'k [i] = {「label」:label [i],「value」:val [i]};'並省略'.push()'。 – nnnnnn

+0

請添加問題並解釋「不工作」的含義 - 你期待什麼,什麼不會發生/確切的錯誤,你看到(我從標題中刪除「不工作」,因爲它不屬於那裏)。 –

回答

1

既然你已經推對象到一個數組,像這樣做 -

var lab = ["1","2","3",4]; 
var val = ["sa","ma","pa","da"]; 
var k = []; 
var obj; // it will hold temporary object references 

for(var i=0; i<4; i++) { 
    obj = {};    
    obj.label = lab[i]; 
    obj.value = val[i]; 
    k.push(obj) ; 
} 

document.write(k[0].label); // index k, rather than the value it contains 
document.write(" " + k[0].value + "<br />"); 

您的代碼不工作,因爲你是索引值是k店,並且您的data變量未在任何地方聲明。

,你甚至可以通過直接推對象到數組,這是一種更好的方式縮短for環 -

for(var i=0; i<4; i++) { 
    k.push({ 
     label: lab[i], 
     value: val[i] 
    }) ; 
} 

這樣,你甚至不需要的臨時對象。

+0

我有一個C結構數組持有一些值,我需要將這些值傳遞給JavaScript,並通過HTML發送到嵌入式系統(這是唯一的方式),並在那裏回顧他們,除此之外,任何好的建議,上午不流利的JavaScript。 – kelvin

+0

@kelvin:我同意Adam Rackis對此的看法。如果你使用某種服務公開你的數據結構,那麼將會更好。 –

2

它看起來像你的data變量是未申報。試試你的循環之前剛剛宣佈它,而你在那裏,審議關於變更條件的for循環檢查數組的長度,而不是它在2

var lab = ["1","2","3",4]; 
var val = ["sa","ma","pa","da"]; 
var k = [], 
    data = []; // <----- here 
for(var i = 0; i < lab.length; i++) { 
    data[i] = {};    
    data[i].label = lab[i]; 
    data[i].value = val[i]; 
    k.push(data[i]) ; 
} 

但真正硬編碼,data數組有什麼意義?它看起來像只是持有k所有的一切副本。爲什麼不只是做:

var lab = ["1","2","3",4]; 
var val = ["sa","ma","pa","da"]; 
var k = []; 

for(var i=0; i < lab.length; i++) { 
    k.push({ 
     label: lab[i], 
     value: val[i]  
    }); 
} 
+0

我有一個c中的結構數組,我需要將這些值傳遞給javascript,並回顧它們,這將工作 – kelvin

+0

@kelvin - 當然不是。我甚至不知道如何將一組C結構傳遞給JavaScript。我猜你必須通過某種Web服務將它們序列化爲JSON。 –

相關問題