首页 > 解决方案 > JavaScript 将两个多维数组合并为唯一数组

问题描述

我正在尝试对如下所示的数据进行排序:

{
    "Params": [
        ["section", "North"],
        ["monitor", "Single Monitor"],
        ["section", "North"],
        ["monitor", "Dual Monitor"]
    ]
}

变成这样的东西:

{
    "section": [
        "North"
    ],
    "monitor": [
        "Single Monitor",
        "Dual Monitor"
    ]
}

但是我目前遇到了问题,我尝试了一些不同的方法,例如在一个循环中将数组连接在一起,或者甚至使用 lodash 的 uniq 函数,但每次我得到一个不想要的结果。

提前感谢您的帮助

标签: javascriptecmascript-6mergelodashunique

解决方案


您可以使用以下方法聚合您的数组数组array.reduce

let obj = {
    "Params": [
        ["section", "North"],
        ["monitor", "Single Monitor"],
        ["section", "North"],
        ["monitor", "Dual Monitor"]
    ]
}

let result = obj.Params.reduce((acc,cur) => {
   let [key,value] = cur;
   if(!acc[key]){
      acc[key] = [];
   }
   if(!acc[key].includes(value)){
      acc[key].push(value);
   }
   return acc;
}, {});

console.log(result);


推荐阅读