在其值上组合JavaScript数组项

Tom*_*Tom -5 javascript jquery json

在值上组合javascript数组项

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

[
  {
    prNumber: 20000401,
    text: 'foo'
  },
  {
    prNumber: 20000402,
    text: 'bar'
  },
  {
    prNumber: 20000401,
    text: 'foobar'
  },
]
Run Code Online (Sandbox Code Playgroud)

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

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

[
  {
    prNumber: 20000401,
    text: [
      'foo',
      'foobar'
    ]
  },
  {
    prNumber: 20000402,
    text: [
      'bar'
    ]
  }
]
Run Code Online (Sandbox Code Playgroud)

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

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

Way*_*ett 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;
}, {});
Run Code Online (Sandbox Code Playgroud)

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