javascript - 通过匹配键/值对重新组合对象数组

标签 javascript

是否有快速或推荐的动态函数来重新组合 JavaScript 中的对象数组?例如,如果我想按一个键进行分组,并在新对象中所有第二个键值的第二个键中创建一个数组。另外,我们假设颜色的数量没有尽头,因此新的数组位置必须是动态的,我们不一定可以假设它。下面的例子:

从此

array = [
    {color:"red", number:23},
    {color:"blue", number:52},
    {color:"green", number:55},
    {color:"red", number:15},
    {color:"green", number:53},
    {color:"blue", number:23},
    {color:"red", number:25},
]

到此

array = [
    {color:"red", numbers:[23,15,25]},
    {color:"blue", numbers:[52,23]},
    {color:"green", numbers:[55,53]}
]

最佳答案

您可以使用函数reduce对值进行分组,并使用函数Object.values来提取分组的值。

let array = [    {color:"red", number:23},    {color:"blue", number:52},    {color:"green", number:55},    {color:"red", number:15},    {color:"green", number:53},    {color:"blue", number:23},    {color:"red", number:25}],
    result = Object.values(array.reduce((a, {color, number}) => {
      (a[color] || (a[color] = {color, numbers: []})).numbers.push(number);
      return a;
    }, Object.create(null)));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 通过匹配键/值对重新组合对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54964690/

相关文章:

javascript - 仅显示适合桌面屏幕尺寸的 div

javascript - 正确调用 JQuery 方法

javascript - 我应该将 S3 存储桶与 form_for 图像 uploader 一起使用吗?

javascript - 使用 Kendo Grid,你能发现列是否隐藏在 DataBound 事件中吗?

php - JavaScript 和 PHP 之间前瞻断言的惰性差异

javascript - JSON数据存入表需要tr元素

javascript - Vuetify 选项卡在滚动时变为事件状态

javascript - 通过 jQuery 重置联系表单的问题

javascript - 如何更改对话框窗口的确定/取消按钮的标签?

javascript - 替换多个空白区域