2012-07-30 144 views
0

如何将下面的多维数组转换为具有jQuery中最小循环的单维关联数组?将多维数组转换为单维关联jquery数组

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

预期结果:

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

这不是有效的JavaScript。 JS没有关联数组;它具有执行广泛相同角色的对象,但它们不是数组。你有什么会错误的。 – Utkanos 2012-07-30 12:06:25

+1

'{'a':3,'b':2,'c':4,'d':3}'是您要查找的JS语法。 – nnnnnn 2012-07-30 12:08:27

回答

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/

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

延伸阅读:

  • Working with objects(页面具有目前一些加载错误,但通常这是一个很好的参考,我敢肯定,MDN将会尽快修复它)
  • $.extend()