在其值上组合JavaScript数组项

时间:2014-01-14 15:25:58

标签: javascript jquery json

按值

分组javascript数组项

假设您有一个json对象,如:

[
  {
    prNumber: 20000401,
    text: 'foo'
  },
  {
    prNumber: 20000402,
    text: 'bar'
  },
  {
    prNumber: 20000401,
    text: 'foobar'
  },
]

是否可以在prNumber上执行“加入”?

例如,可能所需的输出类似于:

[
  {
    prNumber: 20000401,
    text: [
      'foo',
      'foobar'
    ]
  },
  {
    prNumber: 20000402,
    text: [
      'bar'
    ]
  }
]

我没有任何代码样本,所以我不会在这里发布。

这最好使用vanilla javascript,但会接受jQuery的答案。

1 个答案:

答案 0 :(得分:9)

您应该迭代初始数组并创建从prNumber键控的新对象。以下是使用reduce的方法(假设您已将数组分配给名为orig的变量):

var result = orig.reduce(function(prev, curr, index, arr) {
    var num = curr["prNumber"];
    if (!prev[num]) {
        prev[num] = [];
    }
    prev[num].push(curr["text"]);
    return prev;
}, {});

您可以轻松将其转换为问题中列出的示例结构。