Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按键值筛选和分组_Javascript_Arrays_Typescript_Object_Multidimensional Array - Fatal编程技术网

Javascript 按键值筛选和分组

Javascript 按键值筛选和分组,javascript,arrays,typescript,object,multidimensional-array,Javascript,Arrays,Typescript,Object,Multidimensional Array,下面是我的样本数据 var data = [ { "Employee Name": "Mr. X", "Portfolio Lead": "A" }, { "Employee Name": "Mr. Y", "Portfolio Lead": "B" }, { "Employee Name": "Mr. Z", "Portfolio Lead": "C" }, { "Employee Name": "Mr. Q"

下面是我的样本数据

var data = [
  {
    "Employee Name": "Mr. X",
    "Portfolio Lead": "A"
  },
  {
    "Employee Name": "Mr. Y",
    "Portfolio Lead": "B"
  },
  {
    "Employee Name": "Mr. Z",
    "Portfolio Lead": "C"
  },
  {
    "Employee Name": "Mr. Q",
    "Portfolio Lead": "A"
  },
  {
    "Employee Name": "Mr. P",
    "Portfolio Lead": "A"
  }
];
现在,我需要将所有数组项按其
“Portfolio Lead”
分组,并将它们推送到新数组中

下面是我的代码

const groupBy = (array, key) => {
  return array.reduce((result, currentValue) => {
    (result[currentValue[key]] = result[currentValue[key]] || []).push(
      currentValue
    );
    return result;
  }, {});
};
上面的代码是有效的,它是按键分组的,但我希望新数组是在这种结构中

我现在的结构是这样的,

{
  "A": [
    {
      "Employee Name": "Mr. X",
      "Portfolio Lead": "A"
    },
    ...
  ],
  "B": [
    {
      "Employee Name": "Mr. Y",
      "Portfolio Lead": "B"
    }
  ],
  "C": [
    {
      "Employee Name": "Mr. Z",
      "Portfolio Lead": "C"
    }
  ]
}
但需要这样吗

{
  "Portfolio Lead": "A",
  Count: 3,
  oriData: [....]
}
目前我被困在这个请帮助

My stackBlitz

我们可以调用结果值,然后调用它以我们想要的方式格式化它:

constgroupby=(数组,键)=>{
返回Object.entries(array.reduce)((result,currentValue)=>{
(结果[currentValue[key]]=结果[currentValue[key]]| |[])。按(
当前值
);
返回结果;
}.map(v=>({[key]:v[0],count:v[1]。长度,oriData:v[1]});
};

什么是
oriData
?我得到的错误
属性“length”在类型“unknown”上不存在。ts(2339)
我得到的错误属性“length”在类型“unknown”上不存在。ts(2339)@Arun您使用的是相同的数据吗?你用的是什么?
const groupBy = (array, key) => {
  return Object.entries(array.reduce((result, currentValue) => ({
     ...result,
     [currentValue[key]]: [...(result[currentValue[key]] || []), currentValue]
  }), {})).map(ob => ({"Portfolio Lead": ob[0], oriData: ob[1], Count: ob[1].length}));
};