如何使用for...in循环修改对象中的键名?
当然能用for...in循环修改对象键名!
你之前的代码只是拼接了字符串但没有实际修改对象的结构,我来帮你调整一下,实现你想要的效果。
首先要明确:对象的键名是不能直接修改的,我们得通过“新增新键并赋值,再删除旧键”的方式来达到“修改键名”的目的。用for...in循环完全可以做到这一点,下面是具体实现:
方法1:直接修改原对象
const meinObject = { name: "Dominic", plz: 9548 }; for (let key in meinObject) { // 只处理对象自身的属性,跳过原型链继承的属性(这是个好习惯) if (meinObject.hasOwnProperty(key)) { // 添加带"1"后缀的新键,并把旧键的值赋给它 meinObject[key + "1"] = meinObject[key]; // 删除原来的旧键 delete meinObject[key]; } } console.log(meinObject); // 输出结果: { name1: 'Dominic', plz1: 9548 }
方法2:创建新对象(不修改原对象)
如果你不想改动原对象,可以把新键值对放到一个空对象里:
const meinObject = { name: "Dominic", plz: 9548 }; const newObject = {}; for (let key in meinObject) { if (meinObject.hasOwnProperty(key)) { newObject[key + "1"] = meinObject[key]; } } console.log(newObject); // 输出结果: { name1: 'Dominic', plz1: 9548 } console.log(meinObject); // 原对象完全不变:{ name: 'Dominic', plz: 9548 }
补充说明
hasOwnProperty的作用:确保我们只遍历对象自身定义的属性,不会误处理原型链上继承来的属性(比如toString这类默认方法)。- 为什么不能直接改键名:JavaScript对象的键本质是字符串(或Symbol),一旦创建就无法直接修改,只能通过新增+删除的方式模拟“修改”行为。
内容的提问来源于stack exchange,提问作者spf
相关产品推荐
相关产品推荐

