0

如何在jQuery中将以下多维数组转换为具有最小循环的一维关联数组?

array(array('a'=>3),array('b'=>2),array('c'=>4),array('d'=>3))

预期结果:

array('a'=>3,'b'=>2,'c'=>4,'d'=>3);
4

1 回答 1

1
{'a':3, 'b':2, 'c':4, 'd':3}

...是您在结果中寻找的 JS 语法。从某种意义上说,JS 没有关联数组,比如 PHP 有:它有对象,它们(大约)完成相同的工作。

如果您显示的代码在其他语言(PHP?)中有效,则可以将其转换为 JSON 字符串,并且当 JS 解析 JSON 时,您最终会得到一个 JS 对象数组,如下所示:

[ {'a':3}, {'b':2}, {'c':4}, {'d':3} ]

要将其转换为 JS 对象而不是对象数组,最简单的方法可能是使用jQuery.extend()

// assume some JSON.parse() or other process has created
myArr = [ {'a':3}, {'b':2}, {'c':4}, {'d':3} ]
// then

var tmpArr = myArr.slice(0);   // make shallow copy of myArr
tmpArr.unshift({});            // insert an empty object

var newObj = jQuery.extend.apply(this, tmpArr);

演示:http: //jsfiddle.net/SqcEw/

请注意,如果原始数组中的多个元素具有相同的属性名称,那么最终对象中的一个会破坏另一个。

进一步阅读:

  • 使用对象(页面目前有一些加载错误,但通常这是一个很好的参考,我相信 MDN 会很快修复它)
  • $.extend()
于 2012-07-30T12:19:54.213 回答