【问题标题】:Convert a multidimensional array to single dimensional associative jquery array将多维数组转换为一维关联 jquery 数组
【发布时间】:2012-07-30 12:03:17
【问题描述】:

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

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

预期结果:

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

【问题讨论】:

  • 那不是有效的 JavaScript。 JS 没有关联数组;它具有执行大致相同角色的对象,但它们不是数组。你所拥有的会出错。
  • {'a':3, 'b':2, 'c':4, 'd':3} 是您要查找的 JS 语法。

标签: jquery arrays associative-array


【解决方案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/

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

进一步阅读:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-21
    • 2012-05-16
    • 1970-01-01
    • 2023-03-26
    • 2019-06-29
    相关资源
    最近更新 更多