javascript - 计算多次搜索的出现次数
问题描述
我发现了这一点:计算列表(python)中搜索字符串的出现次数,与我需要的解决方案类似,但在 javascript 中。
我有对象数组:
data_items = [
{
"no": "1",
"category": "design",
"class": "low",
"status": "open",
},
{
"no": "2",
"category": "permit",
"class": "low",
"status": "close",
},
{
"no": "3",
"category": "permit",
"class": "high",
"status": "open",
},
{
"no": "4",
"category": "quality",
"class": "high",
"status": "close",
}
]
和
categoryList = [
"design",
"permit",
"quality",
"safety",
"commercial"
]
我期望的是计算每个类别的出现次数包括空结果
countCategories = [
{ "design": 1 },
{ "permit": 2 },
{ "quality": 1 },
{ "safety": 0 },
{ "commercial": 0 }
]
以及如何获得结果的多维版本?如
countCategories = [
{
open: [
{ "design": 1 },
{ "permit": 1 },
{ "quality": 0 },
{ "safety": 0 },
{ "commercial": 0 }
]
}, {
close: [
{ "design": 0 },
{ "permit": 1 },
{ "quality": 1 },
{ "safety": 0 },
{ "commercial": 0 }
]
}
]
我一直在尝试通过减少和过滤来获得结果,但没有运气
感谢您的帮助。
解决方案
您可以像这样计算所有类别,然后将其转换为您想要的任何格式:
const data_items = [{
"no": "1",
"category": "design",
"class": "low",
"status": "open",
},
{
"no": "2",
"category": "permit",
"class": "low",
"status": "close",
},
{
"no": "3",
"category": "permit",
"class": "high",
"status": "open",
},
{
"no": "4",
"category": "quality",
"class": "high",
"status": "close",
}
]
const counting = new Map();
for (const item of data_items) {
let count = counting.get(item.category) || 0;
counting.set(item.category, count + 1);
}
// Convert it to the format you wanted (even though it's a weird one)
const countCategories = [];
for (const [key, value] of counting) {
countCategories.push({
[key]: value
});
}
console.log(countCategories);
// [
// {design: 1},
// {permit: 2},
// {quality: 1},
// ]
编辑:好像你在我写这个答案时添加了多维版本的要求。您可以重复使用上述代码并运行两次,但一次item.status === 'open'
过滤为'close'
. 这将为您提供两个结果数组,您可以将它们组合成一个多维版本。
推荐阅读
- doxygen - 如何从 xml 中提取调用图(协作图)详细信息?
- terraform - 可以使用 Terraform 添加到 AWS Glue Crawler 的 s3_targets / 数据存储是否存在最大限制?
- java - 我有一个 KeyListener 的内部类,它返回一个错误说“不是抽象的,不会覆盖抽象方法”
- python - 如何集成 sympy 表达式和 Latex 格式
- hyperledger-fabric - 如何使用 Hyperledger Fabric 管理链下数据?
- swift - 为任何 Object 自动生成 CustomStringConvertible 实现
- c# - 如何将 DbContext 转换为 MyContext
- excel - 在 vba 公式中使用字符串元素
- javascript - 当应用程序处于后台或被终止时,在 React Native 中显示模式通知。类似于 Whatsapp 呼叫通知
- r - 在 for 循环中使用 if 语句根据条件计算行数