JavaScript 如何计算对象数组中重复姓名的出现次数
给定一个对象数组,任务是根据其值找到给定键的出现次数。
示例:
Input : arr = [
{
employeeName: "Ram",
employeeId: 23
},
{
employeeName: "Shyam",
employeeId: 24
},
{
employeeName: "Ram",
employeeId: 21
},
{
employeeName: "Ram",
employeeId: 25
},
{
employeeName: "Kisan",
employeeId: 22
},
{
employeeName: "Shyam",
employeeId: 20
}
]
key = "employeeName"
Output: [
{employeeName: "Ram", occurrences: 3} ,
{employeeName: "Shyam", occurrences: 2},
{employeeName: "Kisan", occurrences: 1}
]
方法: 在这个方法中,我们按照以下步骤进行操作。
- 创建一个空的输出数组。
- 使用forEach迭代输入数组。
- 检查输出数组是否包含任何包含给定键值的对象。
- 如果没有,则创建一个新对象,并将对象的键(提供的键名称)设置为值(当前迭代对象的键的值),并将出现次数设置为1。
- 如果有,则迭代输出数组,并搜索当前迭代的键是否等于输入数组迭代的键,然后将出现次数增加1。
示例:
<script>
function findOcc(arr, key){
let arr2 = [];
arr.forEach((x)=>{
// Checking if there is any object in arr2
// which contains the key value
if(arr2.some((val)=>{ return val[key] == x[key] })){
// If yes! then increase the occurrence by 1
arr2.forEach((k)=>{
if(k[key] === x[key]){
k["occurrence"]++
}
})
}else{
// If not! Then create a new object initialize
// it with the present iteration key's value and
// set the occurrence to 1
let a = {}
a[key] = x[key]
a["occurrence"] = 1
arr2.push(a);
}
})
return arr2
}
let arr = [
{
employeeName: "Ram",
employeeId: 23
},
{
employeeName: "Shyam",
employeeId: 24
},
{
employeeName: "Ram",
employeeId: 21
},
{
employeeName: "Ram",
employeeId: 25
},
{
employeeName: "Kisan",
employeeId: 22
},
{
employeeName: "Shyam",
employeeId: 20
}
]
let key = "employeeName"
console.log(findOcc(arr, key))
</script>
输出:
[
{
employeeName: "Ram",
occurrence: 3
},
{
employeeName: "Shyam",
occurrence: 2
},
{
employeeName: "Kisan",
occurrence: 1
}
]
极客教程