首页 > 解决方案 > 使用 loadash 通过两个键获取对象组数组

问题描述

输入:

[
  {
    "Country": "BR",
    "New Lv1-Lv2": "#N/A"
  },
{
    "Country": "BR",
    "New Lv1-Lv2": "#N/A"
  },
  {
    "Country": "",
    "New Lv1-Lv2": "test"
}]

输出:

[
  {
    "Country": "BR",
    "New Lv1-Lv2": "#N/A",
"count":2
  },
  {
    "Country": "",
    "New Lv1-Lv2": "test",
"count":1
}]

我使用了 loadhash group by 但不知道如何映射多个键请告诉我如何完成

标签: javascriptarrayscountlogicgrouping

解决方案


构建一个具有聚合计数的对象。(PS.根据您的需要更改密钥是唯一的)

const convert = (arr) => {
  const res = {};
  arr.forEach((obj) => {
    const key = `${obj.Country}${obj["New Lv1-Lv2"]}`;
    if (!res[key]) {
      res[key] = { ...obj, count: 0 };
    }
    res[key].count += 1;
  });
  return Object.values(res);
};

const data = [
  {
    Country: "BR",
    "New Lv1-Lv2": "#N/A",
  },
  {
    Country: "BR",
    "New Lv1-Lv2": "#N/A",
  },
  {
    Country: "",
    "New Lv1-Lv2": "test",
  },
];

console.log(convert(data));


推荐阅读