jQuery - изменить список элементов на ассоциативный массив - PullRequest
2 голосов
/ 08 июня 2010

Для данного ассоциативного массива (типа, возвращаемого 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']
}

Похоже, что это, по сути, обратный вопрос: Построить ассоциативный массив на основе значений другого ассоциативного массива ... но в Javascript (не PHP).Я не смог найти этот вопрос в Stackoverflow, хотя думал, что его спросят.

Спасибо, что прочитали.

Брайан

1 Ответ

4 голосов
/ 08 июня 2010

Вам просто нужно перебрать объекты, проверить, существует ли name в результате, и сохранить или передать значение, например ::10000 *.

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"]}
...