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

JavaScript:在while循环内实现6层r属性嵌套对象的问题

问题分析与解决方案

核心问题

你的代码有两个关键问题导致无法实现目标嵌套结构:

  1. 循环逻辑错误:每次循环直接覆盖result["r"],旧的嵌套对象被丢弃,最终只能得到一层结构
  2. 条件判断与需求相反:需求要求num>12或num<1时执行逻辑,但原代码里是1<num<13才执行,不符合要求

修正后的代码

let num = 6; // 可替换为>12或<1的数值测试,比如num=13或num=0
if (num > 12 || num < 1) {
  let result = { l: num };
  let currentNode = result;
  // 生成6层嵌套,循环6次
  for (let i = 0; i < 6; i++) {
    currentNode.r = { l: num };
    currentNode = currentNode.r;
  }
  // 最后一层的r可按需设置终止值,比如null
  currentNode.r = null;
  console.log(result);
} else {
  throw new Error('Invalid number');
}

代码说明

  • 修正条件判断:把num <13 && num>1改成num>12 || num<1,匹配需求要求
  • 嵌套实现逻辑:
    1. 先初始化最外层的result对象
    2. 用currentNode指针跟踪当前要添加子节点的位置,每次循环给currentNode.r赋值新对象,再把指针移到这个新对象上
    3. 循环6次后,就能得到6层嵌套的{l:num, r:{l:num, r:{...}}}结构
  • 终止节点处理:最后一层的r可根据需求设置,比如设为null避免无限嵌套

原代码问题拆解

原代码里result["r"] = o;每次都直接替换最外层的r属性,之前创建的对象没有被保留为嵌套结构,相当于每次都把旧的r覆盖掉,自然无法形成多层嵌套。而用指针跟踪当前节点的方式,能让每一层的r都指向新的子对象,从而构建出完整的嵌套链。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:32:37