javascript - 将对象数组转换为具有分组键作为数组的对象的简单方法

标签 javascript typescript lodash

我正在寻找一种简单的方法来执行以下操作。我尝试过使用 lodash.reduce 来做到这一点,但它很笨重,有没有更简单的方法。

来自:

[{a: 'meow'}, {a: 'woof'}]

致:

{a: ['meow', 'woof']}

最佳答案

你可以用纯 JS 来做到这一点,不需要 loadash。

在输入数组上调用数组的reduce方法,并将数组缩减为一个对象,循环遍历内部对象的键:

const input = [{a: 'meow'}, {a: 'woof'}, {b: 'hi'}, {a: 'dog', c: 'bye'}, {}];

console.log(input.reduce((acc, val) => {
  Object.keys(val).forEach(key => {
    if(!acc[key]) {
      acc[key] = [];
    }
    acc[key].push(val[key]);
  });
  return acc;
}, {}));

关于javascript - 将对象数组转换为具有分组键作为数组的对象的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54015878/

相关文章:

angular - 进入页面时按钮自动启动

javascript - 过滤两个数组

javascript - lodash 按数组 Angular 5 过滤对象数组

javascript - Blueimp jQuery 文件上传和我的异常(exception)

javascript - 同一 View 中 map 和图表的剑道 UI 中的数据拉伸(stretch)真/假

javascript - 拉力赛标签云

typescript - 名称 : ' XXX |||| XXXs' , 在 i18n 中意味着什么?

javascript - getElementById 到array 来函数切换

javascript - 在浏览器中运行 TypeScript 项目

javascript - 我如何使用 lodash 和 JS 模块