首页 > 解决方案 > 使用对象文字来跟踪几个(未知)计数的干净方法是什么?

问题描述

给定以下代码,有一个变量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;,有没有办法让它更短更简单/更少冗余/更干净?这是一个节点脚本,因此欢迎使用 ES6/7 解决方案。

一种方法是counts使用已设置为的键初始化文字0,但我不知道该函数可以给出的状态。


尽量使标题简洁明了,如果可以改进,请随时编辑。

标签: javascriptalgorithmoptimizationobject-literal

解决方案


正如@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;
}

推荐阅读