You need to enable JavaScript to run this app. 如何编写函数统计usuarios对象中online属性为true的布尔值数量
优惠活动
大模型
产品
解决方案
定价
更多

如何编写函数统计usuarios对象中online属性为true的布尔值数量

在线用户数统计实现方案

核心思路

拿到usuarios对象下所有的直接子成员,逐个校验子成员的online属性值是否严格为true,对符合条件的条目做计数累加即可。该实现完全匹配你给出的扁平结构对象,不会误统计嵌套层级内的属性。

参考实现代码

方式1:基础循环写法(全版本兼容)

function contarUsuariosOnline(usuarios) {
    let contador = 0;
    // 获取usuarios下所有直接子成员的键名
    const listaClaves = Object.keys(usuarios);
    for (const clave of listaClaves) {
        // 严格判断online值为true才计数,避免误算
        if (usuarios[clave].online === true) {
            contador++;
        }
    }
    return contador;
}

方式2:数组reduce简洁写法

function contarUsuariosOnline(usuarios) {
    // 直接取出所有子成员的值做遍历,少一层键名取值的步骤
    return Object.values(usuarios).reduce((total, usuario) => {
        return total + (usuario.online === true ? 1 : 0);
    }, 0);
}

效果验证

用你给出的测试对象调用函数,最终返回的正确结果为2:

// 匹配你给出结构的测试对象
const usuarios = {
    toni: {
        edad: 33,
        online: true
    },
    emi: {
        edad: 25,
        online: true
    },
    fran: {
        edad: 25,
        online: false
    },
    agus: {
        edad: 24,
        online: false
    }
};

console.log(contarUsuariosOnline(usuarios)); // 控制台输出 2

注意事项

  • 两种写法都做了严格值判断,只有online属性的取值是布尔类型的true才会被计数,别图省事直接写if (usuario.online)做判断,万一后续代码改动出现online: 1、子成员缺失online属性的情况,很容易出现计数偏差
  • 当前实现只遍历usuarios的直接子成员,完全匹配你给出的单层结构示例,如果后续结构升级为多层嵌套的用户分组,只需要在判断分支里增加递归逻辑即可复用

内容的提问来源于stack exchange,提问作者Pago

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.23 17:06:03