2010-06-25 42 views
1

因爲我更熟悉php,所以我會盡力從php的角度解釋我需要的東西。我需要傳遞給javascript函數的數組:Javascript:具有鍵值替代的多維數組?

array('fieldname' => 'value', 'fieldname2' => 'value2' ...); 

Thne功能會做到這一點

foreach(array as k => v) { 
    <input name='fieldname' value='value'/> 
    <input name='fieldname2' value='value2'/> 
    ... 
} 

我不知道如何做到這一點,據我所知,JS不具有多維數組,所以我想知道什麼是正確的方式來做到這一點的JavaScript?

p.s.我知道有一個庫爲js提供了php函數,但我想知道在純js中執行此操作的最佳做​​法是什麼。

非常感謝您

回答

5
<script type="text/javascript"> 
// <![CDATA[ 

    // Create an associative array. 
    var array = {'fieldname': 'value', 'fieldname2': 'value2'}; 

    for (var key in array) { 
     // Create an input element and set its name and value. 
     var input = document.createElement("input"); 

     input.name = key; 
     input.value = array[key]; 

     // There's no simple "insert an element right here"; you have to pick 
     // where in the document to add the input box. 
     document.body.appendChild(input); 
    } 

// ]]> 
</script> 
3

在Javascript中有沒有關聯數組。有提供鍵值對的對象,但它們確實不應該與關聯數組混淆。你可以這樣做:

var myObject = { 
    key1: 'value1', 
    key2: 'value2' 
}; 

for (var i in myOjbect) { 
    var thisVal = myObject[i]; 
} 

這將允許你迭代你創建的對象的屬性。同樣,雖然這與您所請求的類似,但它與PHP中的關聯數組並不完全相同。

0

我可能會錯過一些東西,因爲我不太清楚當你說多維數組時你的意思......你在代碼中顯示的內容通常稱爲關聯數組。

var fields={'fieldname' : 'value', 'fieldname2' : 'value2'}; 
for(var key in fields){ 
    var elm=document.createElement('input'); 
    elm.name=key; 
    elm.value=fields[key]; 
    document.body.appendChild(elm); 
} 
0

multidimensianla陣列中JS:

a={a:{a:1,b:2},b:{a:1,b:2}}; 
a.a.a=5; 
a['a']['a']=7; 
+0

嘿。這是一個對象。 – 2010-06-25 13:29:39

+0

如果它看起來像一隻鴨子,嘎嘎像鴨子一樣走路,就像一隻鴨子,它是一隻鴨子 – codez 2010-06-25 13:41:34