JavaScript如何移除对象外层父级属性,提取内层子对象
JavaScript移除对象外层包裹属性的实现方案
场景前提
你的输入结构为外层仅包含一个属性(示例中为id),值为你需要保留的内层对象。
方案1:已知外层属性名(推荐,性能最优)
如果外层属性名固定为id,直接提取内层对象即可:
const origin = { "id": { "key":"value" } }; // 声明新变量存储结果 const target = origin.id; // 如需修改原变量,注意原变量需要用let声明而非const: // let origin = { "id": { "key":"value" } }; // origin = origin.id;
适用场景:外层属性名固定可预知,代码可读性最高,运行无额外性能损耗。
方案2:未知外层属性名(通用场景)
如果外层属性名不固定,且外层永远只有一个属性,可以动态提取第一个属性值:
const origin = { "id": { "key":"value" } }; const target = Object.values(origin)[0];
适用场景:外层属性名不固定,仅存在一个外层包裹属性的通用场景。
方案3:解构赋值写法
偏好ES6解构语法的可以用这种写法,逻辑和方案1一致:
// 已知外层属性名是id const { id: target } = { "id": { "key":"value" } }; // 直接修改原变量的写法: // let origin = { "id": { "key":"value" } }; // ({id: origin} = origin);
边界情况说明
如果原对象外层可能存在多个属性,方案2只会返回第一个属性的值,需要根据业务逻辑调整筛选规则。
内容的提问来源于stack exchange,提问作者elmgren
相关产品推荐
相关产品推荐

