使用 object 文字来跟踪多个(未知)计数的简洁方法是什么?
What's a clean way to use an object literal to track several (unknown) counts?
给定以下代码,变量 counts
计算函数 functionThatGivesSomeKnownOrUnknownStatus
给出每个状态的次数。
const counts = {};
for (let i = 0; i < 100; i++) {
const status = functionThatGivesSomeKnownOrUnknownStatus();
counts[status] = counts[status] ? counts[status] + 1 : 1;
}
我不喜欢的部分是这一行 counts[status] = counts[status] ? counts[status] + 1 : 1;
,有没有办法让它更短 simpler/less redundant/cleaner?
这是一个节点脚本,因此欢迎 ES6/7 解决方案。
一种方法是使用已设置为 0
的键初始化 counts
文字,但我不知道该函数可以提供的状态。
标题尽量做到简洁明了,如有改进,欢迎编辑。
正如@Ry 评论的那样,我最终使用了这个解决方案:
counts[status] = (counts[status] || 0) + 1;
里面的代码:
const counts = {};
for (let i = 0; i < 100; i++) {
const status = functionThatGivesSomeKnownOrUnknownStatus();
counts[status] = (counts[status] || 0) + 1;
}
给定以下代码,变量 counts
计算函数 functionThatGivesSomeKnownOrUnknownStatus
给出每个状态的次数。
const counts = {};
for (let i = 0; i < 100; i++) {
const status = functionThatGivesSomeKnownOrUnknownStatus();
counts[status] = counts[status] ? counts[status] + 1 : 1;
}
我不喜欢的部分是这一行 counts[status] = counts[status] ? counts[status] + 1 : 1;
,有没有办法让它更短 simpler/less redundant/cleaner?
这是一个节点脚本,因此欢迎 ES6/7 解决方案。
一种方法是使用已设置为 0
的键初始化 counts
文字,但我不知道该函数可以提供的状态。
标题尽量做到简洁明了,如有改进,欢迎编辑。
正如@Ry 评论的那样,我最终使用了这个解决方案:
counts[status] = (counts[status] || 0) + 1;
里面的代码:
const counts = {};
for (let i = 0; i < 100; i++) {
const status = functionThatGivesSomeKnownOrUnknownStatus();
counts[status] = (counts[status] || 0) + 1;
}