如何重命名对象中的属性?示例:{radiant:11,dire:22}转{alpha:11,omega:22}
嘿,这个需求很常见,我给你几种实用的实现方式,你可以根据自己的场景来选:
方案1:创建新对象(推荐,不修改原数据)
如果希望保留原来的对象不变,直接基于原对象的值创建一个新对象是最稳妥的方式,直观且不会产生副作用:
const original = { radiant: 11, dire: 22 }; const modified = { alpha: original.radiant, omega: original.dire }; console.log(modified); // 输出: { alpha: 11, omega: 22 } console.log(original); // 原对象不受影响: { radiant: 11, dire: 22 }
这种方式特别适合需要保留原始数据的场景,比如后续还要用到原对象的情况。
方案2:直接修改原对象(适合不需要保留原对象的场景)
如果不需要保留原来的对象,可以直接在原对象上删除旧属性、添加新属性:
// 注意如果要修改原对象,最好用let声明(如果原来用const的话无法重新赋值) let obj = { radiant: 11, dire: 22 }; // 先添加新属性,把对应的值传过去 obj.alpha = obj.radiant; obj.omega = obj.dire; // 删除旧属性 delete obj.radiant; delete obj.dire; console.log(obj); // 输出: { alpha: 11, omega: 22 }
或者用解构赋值+重新赋值的方式,更简洁:
let obj = { radiant: 11, dire: 22 }; // 解构原对象的属性,并重命名为新键名 const { radiant: alpha, dire: omega } = obj; // 直接把obj替换成新对象 obj = { alpha, omega }; console.log(obj); // 输出: { alpha: 11, omega: 22 }
方案3:使用对象展开运算符(适合原对象有额外属性的场景)
如果原对象除了radiant和dire还有其他属性,想保留那些属性同时替换这两个键名,可以用展开运算符:
const original = { radiant: 11, dire: 22, extra: "some value" }; const modified = { ...original, // 保留原对象的其他属性 alpha: original.radiant, omega: original.dire }; // 删除旧键 delete modified.radiant; delete modified.dire; console.log(modified); // 输出: { extra: "some value", alpha: 11, omega: 22 }
总的来说,方案1是最推荐的,因为它遵循了函数式编程中"避免修改原数据"的原则,能减少不必要的bug。如果必须修改原对象,方案2的解构赋值方式会更简洁。
内容的提问来源于stack exchange,提问作者Angkasa Olrenza
相关产品推荐
相关产品推荐

