如何基于不同嵌套结构、不同键的布尔属性统计增量计数?
优化布尔属性累加计数的实现方式
这里有几种更简洁的实现方式,能让代码更紧凑且易于维护:
方法1:利用数组收集布尔值并求和
把所有需要计数的布尔属性统一放到数组中,借助数组的reduce方法完成累加——因为布尔值在加法运算中会被自动转换为1(true)或0(false),所以可以直接简化求和逻辑:
const response = { address_details: { is_completed: true }, contact_details: { home_details: { is_done_and_verified: true } } } const count = [ response.address_details.is_completed, response.contact_details.home_details.is_done_and_verified ].reduce((total, boolVal) => total + boolVal, 0); console.log(count); // 输出 2
方法2:处理可能存在的属性缺失场景
如果某些嵌套属性可能不存在(避免运行时报错),可以结合**可选链操作符(?.)和空值合并运算符(??)**做容错处理,默认将不存在的属性视为false:
const count = [ response.address_details?.is_completed ?? false, response.contact_details?.home_details?.is_done_and_verified ?? false ].reduce((total, boolVal) => total + boolVal, 0);
优势说明
这种方式相比原实现的优势:
- 代码更紧凑,无需单独声明多个中间变量
- 所有需要计数的布尔值集中管理,后续新增/修改判断条件只需在数组中调整,维护成本更低
- 逻辑清晰,一眼就能看到所有参与计数的属性
内容的提问来源于stack exchange,提问作者dev
相关产品推荐
相关产品推荐

