从数组中筛选数据并在javascript中对其分组?

从数组中筛选数据并在javascript中对其分组?,javascript,jquery,reactjs,typescript,sharepoint,Javascript,Jquery,Reactjs,Typescript,Sharepoint,我有一个如下所示的数组 OStatus=["hold","approved","rejected","hold","approved","rejected","hold","approved"] 我想要这样的结果 Oinfo=["hold":3,"approved":3,"rejected":2]. 假设您希望生成一个对象,该对象将输入数组中的元素键映射到每个元素的计数值,您可以使用array.reduce,如下所示: Oinfo = OStatus.reduce((acc, x) =>

我有一个如下所示的数组

OStatus=["hold","approved","rejected","hold","approved","rejected","hold","approved"]
我想要这样的结果

Oinfo=["hold":3,"approved":3,"rejected":2].

假设您希望生成一个对象,该对象将输入数组中的元素键映射到每个元素的计数值,您可以使用array.reduce,如下所示:

Oinfo = OStatus.reduce((acc, x) => ({ ...acc, [x]: (acc[x] || 0) + 1 }), {})

你想要的是不可能的,它必须是一个对象,所以你尝试了什么,这是一个简单的循环问题。reduce的可能用例。有可能得到每种类型的计数吗?类似这样的oinfo[3,3,2]可以得到每种类型的计数吗?类似这样的oinfo[3,3,2]假设
OStatus
等于
[“保持”、“批准”、“拒绝”、“保持”、“批准”、“拒绝”、“保持”、“批准”]
,那么我的代码生成
{“保持”:3,“批准”:3,“拒绝”:2}
。这就是你想要的吗?