CP137 · 深拷贝(含循环引用)

中等前端手撕核心代码模式仅 JavaScript递归WeakMap时限 1000 ms(参考)
题目描述

实现 deepClone(value):递归复制普通对象与数组(原始值直接返回),并正确处理循环引用(同一个源对象只复制一次,克隆结果中的引用关系与源一致)。脚手架会用 refs 数组构造循环引用,克隆后修改源对象再输出克隆,以检验是否为真深拷贝。不得使用 structuredClone / JSON 序列化。本题为「核心代码模式 · 仅 JavaScript」:模板已内置 JSON 读入与输出脚手架,只需补全指定函数。

输入描述

一行 JSON:{"value": 任意 JSON 值, "refs": [[路径, 目标路径]...]}。脚手架会把 value 中「路径」处的属性指向「目标路径」处的对象以制造循环引用(路径为点号字符串,空串表示根)。

输出描述

三行:克隆是否与源不是同一引用(true/false);源对象被修改后克隆的序列化结果(循环引用处输出 "[Circular]");克隆内部循环引用是否指向克隆自身而非源(true/false)。