javascript - 计算多维数组中的出现次数
问题描述
我有一个看起来像这样的多维数组
[1:[1:mammal,2:cat,3:fur],
2:[1:mammal,2:dog,3:fur],
3:[1:mammal,2:cat,3:fur],
4:[1:fish,2:trout,3:scales]]
我希望计算动物的出现次数以返回这样的数组
[cat:2,dog:1,trout:1]
我一直在尝试使用 for 循环失败,有更好的方法吗?
解决方案
您的语法不正确,返回带有键值对的对象会更容易。
下面是一个使用reduce
函数的例子:
const animals = [['mammal', 'cat', 'fur'], ['mammal', 'dog', 'fur'], ['mammal', 'cat', 'fur'], ['fish', 'trout', 'scales']]
function count (animals) {
return animals.reduce((acc, arr) => {
for (const item of arr) {
acc[item] = acc[item] !== undefined ? acc[item] + 1 : 1
}
return acc
}, {})
}
console.log(count(animals))
推荐阅读
- python - 在 Python 中,如何在执行 if 语句时从函数中返回值?
- python - 使用 pytest 从 UpdateView 测试 contrib.messages
- android - 单击 Sqlite 中的 List Item 并根据列表显示相关列
- perl - 如何在 SublimeText 中配置 SyntaxFold 插件以折叠 perl pod 注释
- angular - Angular 路由器阻止对服务器的调用
- python - 用于图像增强的 TensorFlow 使 keras 无法工作
- entity-framework-core - Entity Framework Core 使用 fromSql 时如何传递参数列表
- html - 将表单内的内容居中
- ruby - 为什么在 Ruby 中迭代需要这么长时间?
- c++ - 如何恢复注册表项的所有元素?(最后写入时间、类型、值、名称……)这是正确的方法吗?