Javascript:具有键值替代的多维数组?

时间:2010-06-25 13:14:37

标签: javascript arrays

因为我对php更精通php感谢js我会尝试从php的角度解释我需要什么。我需要传递一个javascript函数数组:

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

该功能可以做到这一点

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

我不知道怎么做,我明白js没有多维数组,所以我想知道在javascript中这样做的正确方法是什么?

P.S。我知道有一个库可以为js提供php函数,但我想了解在纯js中执行此操作的最佳实践。

非常感谢

4 个答案:

答案 0 :(得分: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>

答案 1 :(得分:3)

在Javascript中没有关联数组。有些对象提供键值对,但它们确实不应该与关联数组混淆。你可以这样做:

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

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

这将允许您迭代您创建的对象的属性。同样,虽然这与您所要求的类似,但它与PHP中的关联数组并不完全相同。

答案 2 :(得分: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);
}

答案 3 :(得分:0)

js中的多维数组:

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