javascript - 具有键号和重复字符串值的 JSON 对象分隔为带有计数的字符串数组
问题描述
我有一个下面提到的格式的 json 对象。我需要一个函数来返回课程名称和计数。这个问题有一个我的问题的答案。此答案适用于不同的 json 对象。[“高级数据结构”,3],[“高级-r”,3]
// Size of the JSON Object
let json = {
"0": "advanced-data-structures",
"1": "advanced-data-structures",
"145": "advanced-data-structures",
"149": "advanced-excel",
"185": "advanced-excel",
"186": "advanced-r",
"202": "advanced-r",
"203": "advanced-r",
"204": "advanced-trading-algorithms",
"205": "advanced-trading-algorithms",
"206": "agile-planning-for-software-products",
"276": "agile-planning-for-software-products",
"277": "agile-planning-for-software-products",
"278": "algorithmic-thinking-1",
"282": "algorithmic-thinking-1",
"283": "algorithmic-thinking-1"
};
let arrayOfCourses = [];
let count = Object.keys(json).length;
Object.keys(json).forEach(function(prop) {
console.log('Key Count', prop)
});
Object.values(json).forEach(function (prop){
console.log('Value', prop);
// I would need something like this
// ["advanced-data-structures", 3],
// ["advanced-r", 3]
});
for(var i = 0 ; i< count; i++) {
console.log(json[i])
arrayOfCourses.push(json[i]);
}
let uniqueItems = Array.from(new Set(arrayOfCourses))
// unique Items removing duplicates.
console.log(uniqueItems)
解决方案
您可以先获取对象的 Object.values,然后根据课程名称对其进行缩减:
const json = { "0": "advanced-data-structures", "1": "advanced-data-structures", "145": "advanced-data-structures", "149": "advanced-excel", "185": "advanced-excel", "186": "advanced-r", "202": "advanced-r", "203": "advanced-r", "204": "advanced-trading-algorithms", "205": "advanced-trading-algorithms", "206": "agile-planning-for-software-products", "276": "agile-planning-for-software-products", "277": "agile-planning-for-software-products", "278": "algorithmic-thinking-1", "282": "algorithmic-thinking-1", "283": "algorithmic-thinking-1" };
const result = Object.entries(Object.values(json).reduce((a,e)=>{
a[e] = a[e] || 0;
a[e]+=1;
return a;
},{}));
console.log(result);
在减少之后,您可以获取entries
该结果对象。
推荐阅读
- c# - 如何在 Blazor WebAssembly 中登录时运行代码?
- python - 如何使用 BeautifulSoup 库获取所有带有“titular”类的标签?
- javascript - 正文结束前的脚本和文件加载之间的差异
- php - Debian命令行中的Provoque“无法打开文件”php
- python - 在 VS Code 中打开项目文件夹时如何自动激活 python 虚拟环境?
- javascript - webpack 正在关注 node_modules/micromatch/index.js:44 的变化
- database - 具有数百个只读副本的分布式数据库,可以通过 HTTP 异步同步
- oozie - 将 Oozie 作业的 SLA 设置为 WAITING 状态
- python-3.x - TypeError:无法将系列转换为
- c# - 如何使用 32feet.net 从 C# 向蓝牙发送数据