【问题标题】:jQuery - change a list of elements to an associative arrayjQuery - 将元素列表更改为关联数组
【发布时间】:2011-02-28 22:03:00
【问题描述】:

给定一个关联数组(由jQuery.serializeArray() 返回的排序),如下所示:

[
{ 'name': 'abc', 'value': 'aaa', '__proto__': [Object] },
{ 'name': 'def', 'value': 'bbb', '__proto__': [Object] },
{ 'name': 'abc', 'value': 'ccc', '__proto__': [Object] }
]

如何使用 jQuery 或仅使用 javascript 将其转换为 name: [values] 的关联数组,如下所示:

{
   'abc': ['aaa', 'ccc'],
   'def': ['bbb']
}

这似乎本质上是这个问题的反面:Build associative array based on values of another associative array... 但在 Javascript(不是 PHP)中。我在 Stackoverflow 上找不到这个问题,但我认为它会被问到。

感谢您的阅读。

布赖恩

【问题讨论】:

    标签: javascript jquery map associative-array


    【解决方案1】:

    您只需遍历对象,检查结果中是否存在name,然后存储或推送值,例如:

    var result = {};
    $.each(arr, function (index, el) {
      if (!result[el.name]) {
        result[el.name] = [el.value];
      } else {
        result[el.name].push(el.value);
      }
    });
    //{"abc":["aaa","ccc"], "def":["bbb"]}
    

    【讨论】:

    • 谢谢;就可以了。 :) 我想到了,因为它似乎是一个常见的操作,可能有一些内置到 jQuery 中来执行此操作(例如 $.map/merge),或者一些 set_default(如 Python)来避免 if/else。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2021-11-18
    • 2013-11-07
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 2022-11-03
    相关资源
    最近更新 更多