javascript - 在javascript中查找对象中键值对的频率

标签 javascript arrays object frequency find-occurrences

假设我有一个对象

teaherList = [
{teacherID:1,teacherName:"john"},
{teacherID:2,teacherName:"joe"},
{teacherID:3,teacherName:"jill"},
{teacherID:1,teacherName:"john"},
{teacherID:2,teacherName:"joe"},
{teacherID:3,teacherName:"jill"},
{teacherID:1,teacherName:"john"},
{teacherID:2,teacherName:"joe"},
{teacherID:3,teacherName:"jill"},
]

现在我如何在对象teaherList 中找到每个 [teacherID:,teacherName:] 的频率

目前我的情况是,

let temp = []
_.each(teaherList, function(k){
   temp.push(k.teacherID)
)

let count1 = countBy(temp);

它给出了对象中教师出现的频率,但是有没有更好和更有效的方法来完成这项任务

最佳答案

假设 teaherList 是一个对象数组,这是一个不需要依赖库的方法,并且还可以一次性创建输出对象(总迭代次数 = 数组长度), reduce:

const teaherList = [
  {teacherID:1,teacherName:"john"},
  {teacherID:2,teacherName:"joe"},
  {teacherID:3,teacherName:"jill"},
  {teacherID:1,teacherName:"john"},
  {teacherID:2,teacherName:"joe"},
  {teacherID:3,teacherName:"jill"},
  {teacherID:1,teacherName:"john"},
  {teacherID:2,teacherName:"joe"},
  {teacherID:3,teacherName:"jill"},
];
console.log(
  teaherList.reduce((a, { teacherName }) => (
    Object.assign(a, { [teacherName]: (a[teacherName] || 0) + 1 })
  ), {})
);

关于javascript - 在javascript中查找对象中键值对的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51317742/

相关文章:

javascript - 如何在绑定(bind)事件中取消绑定(bind)

javascript - trigger.io - 关闭软键盘?

javascript - 如何将选项卡设置为选中

java - 如何在Java中将分割后的字符串存储为数组?

python - 将数组写入 csv python(一列)

arrays - 如何在swift 3中按自定义状态值对自定义对象数组进行排序?

javascript - 如何在 JavaScript 中通过引用传递函数调用中的参数?

java - 访问存储在 Arraylist 中的 Arraylist 中的数据 - Java

javascript - 如何重新分配对象 "getter"方法?

java - 向后遍历数组中的元素