2010-06-25 44 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