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

JS实现removeStar函数:删除嵌套对象*键并提升其内部属性

removeStar函数实现方案

需求说明

  • 处理传入的嵌套对象,定位到p.c路径下键名为*的属性
  • 将*属性下的所有键值对直接挂载到其父节点c下,移除原*属性
  • 返回的对象结构需与预期输出完全一致,且不修改原始传入的输入对象

示例基准代码

let input = {
  "p": {
    "pk1": "pv1",
    "pk2": "pv2",
    "c": {
      "*": {
        "ck1": "cv1",
        "ck2": "cv2"
      }
    }
  }
}

let expectedOutput = {
  "p": {
    "pk1": "pv1",
    "pk2": "pv2",
    "c": {
      "ck1": "cv1",
      "ck2": "cv2"
    }
  }
};

可直接运行的实现代码

function removeStar(input) {
  // 深拷贝输入对象,避免修改原始入参
  const target = structuredClone(input);
  const cNode = target?.p?.c;
  // 校验路径合法性,异常场景直接返回拷贝后的对象不报错
  if (cNode && cNode['*'] && typeof cNode['*'] === 'object') {
    // 将*节点下的所有属性合并到父节点c
    Object.assign(cNode, cNode['*']);
    // 删除原*属性
    delete cNode['*'];
  }
  return target;
}

// 验证输出,结果与expectedOutput完全一致
console.log(removeStar(input));

实现说明

  • 优先用structuredClone做深拷贝,不会污染原始传入的input对象;如果运行环境不支持该API,可替换为JSON.parse(JSON.stringify(input))实现普通JSON对象的深拷贝,适配绝大多数业务场景
  • 增加了路径存在性校验,当传入对象不包含p.c路径或者*属性不存在时不会抛出异常
  • 用原生Object.assign完成属性合并,逻辑简洁无额外依赖,性能表现更好
  • 针对给定用例测试,返回结果结构、字段值和expectedOutput完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:54:40