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

如何用JS循环输出带两个均匀下方小金字塔的星号菱形,解决else if逻辑覆盖问题

实现两个并排均匀星号菱形的方法

要实现两个均匀排列的星号菱形,核心需要调整3个点:

  • 拓宽j的循环范围,预留足够的列数容纳第二个菱形
  • 为第二个菱形设置独立的中心坐标,避免和第一个的星号范围重叠
  • 调整判断逻辑,把两个菱形的星号匹配条件设为并列的或关系,而非嵌套的分支

原有代码的问题说明

  1. 原来的j循环仅遍历1-9列,宽度仅够放下一个菱形,没有多余空间放置第二个
  2. 单菱形的中心固定在第5列,未定义第二个菱形的中心坐标,新增分支的匹配范围无意义
  3. 原有分支的判断优先级是“先匹配第一个菱形条件就输出*”,如果把第二个菱形的条件加在原有else if分支,会被第一个菱形的匹配逻辑阻塞,无法触发

优化后可直接运行的代码

var str5 = "";
for (let i = 1; i < 10; i++) {
  // 计算当前行的菱形半宽:上半逐行变宽,下半逐行变窄
  const halfWidth = i <= 5 ? i - 1 : 9 - i;
  // 总宽度设为19列,足够容纳两个中心分别在第5、15列的菱形
  for (let j = 1; j < 20; j++) {
    // 只要匹配任意一个菱形的星号范围,就输出*
    if (
      (j >= 5 - halfWidth && j <= 5 + halfWidth) ||
      (j >= 15 - halfWidth && j <= 15 + halfWidth)
    ) {
      str5 += "*";
    } else {
      str5 += " ";
    }
  }
  str5 += "\n";
}
console.log(str5);

自定义调整说明

如果要修改两个菱形的间距,只需调整第二个菱形的中心坐标(即代码里的15这个值):

  • 数值越大,两个菱形的间隔越宽
  • 保持两个中心的坐标差为整数,就能保证两个菱形的大小完全一致、排列均匀

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 12:36:04