You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简化JavaScript多层嵌套if语句、降低代码复杂度

代码优化方案

原来的嵌套if语句作用是累加room_spend数组的前6项数值到总消费c中,完全可以简化,甚至一行实现,不需要写多层嵌套判断。

简化后的完整代码

var previous_stays = 12,
    booking_agency_id = null,
    reservation_spend = 375.95,
    room_spend = [12.23,2.35,null,17.99],
    reservation_nights = 4,
    gold_tier = 0;

while (gold_tier == 0) {
  const a = previous_stays >= 5;
  const b = !booking_agency_id;
  const d = reservation_nights;
  // 原来的6层嵌套if直接替换为下面一行,自动累加前6项,空值自动转为0不影响计算
  const c = reservation_spend + room_spend.slice(0,6).reduce((sum, val) => sum + (Number(val) || 0), 0);

  if (!((c/d > 250) && a && b)) break;
  gold_tier = 1;
}

优化说明

  • 用slice(0,6)取数组前6个元素,正好匹配原代码最多累加到索引5的逻辑,哪怕数组长度不足6也不会报错
  • 用reduce方法遍历累加,Number(val) || 0兼容原代码中null值加总时转为0的行为,逻辑和原代码完全一致
  • 整个嵌套逻辑压缩为1行,可读性和可维护性都远高于原来的多层嵌套判断

如果你确实想用forEach实现也可以,写法如下:

let c = reservation_spend;
room_spend.slice(0,6).forEach(val => c += Number(val) || 0);

效果和reduce的写法完全一致,只是没有reduce那么简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 02:24:07