我需要知道获得以下结果的最佳方式
courseFrequency : [
{
'courses': [
'a.i'
],
'count' : 1
},
{
'courses': [
'robotics'
],
'count' : 2
},
{
'courses': [
'software engineering', 'a.i'
],
'count' : 2
},
{
'courses': [
'software engineering', 'a.i','robotics'
],
'count' : 1
}
来自以下json数据。
arr = [
{
'courses': [
'a.i'
]
},
{
'courses': [
'robotics'
]
},
{
'courses': [
'software engineering', 'a.i'
]
},
{
'courses': [
'robotics'
]
},
{
'courses': [
'software engineering', 'a.i'
],
'courses': [
'software engineering', 'a.i','robotics'
]
}];
基本上我需要找出独特的课程及其频率。最佳方式是什么?
答案 0 :(得分:3)
const hash = {}, result = [];
for(const {courses} of arr){
const k = courses.join("$");
if(hash[k]){
hash[k].count++;
} else {
result.push(hash[k] = { courses, count : 1 });
}
}
只需使用hashmap查找重复项即可。由于数组是通过引用进行比较的,我们需要将它连接到一个字符串以进行引用(请注意,如果coursename包含连接符号($
),这将失败)
答案 1 :(得分:0)
它们都是最适合与它们相关的区域。这些概念正在酝酿自己的属性和方法来完成某些任务,例如用于数据传输和交叉浏览方面的JSON作为常见类型数据值。阵列非常好在存储有序列表和订购时,同时删除/拼接元素的成本要高一些。
JSON是数据结构的表示,它不是对象或数组。 例如,JSON可用于将数据从服务器发送到浏览器,因为JavaScript很容易解析为普通的JavaScript数据结构。要对JSON数据执行操作,您需要将其转换为对象,缝了一些像ARRAY这样的房产。 数组在存储有序列表和排序时非常擅长,而删除/拼接元素的成本要高一些。