如何实现交换指定键值对并返回新JavaScript对象?
实现JavaScript对象指定键值交换的函数
嘿,我看你当前的代码确实没达到预期效果——返回数组完全不是你想要的对象结果,咱们一步步调整过来:
先说说你现有代码的问题
- 错误地把
result初始成了数组,而我们需要返回的是对象 - 循环里直接把整个原对象push到数组,根本没处理键值对的交换逻辑
正确的实现思路
- 创建原对象的浅拷贝,避免修改原对象(对象是引用类型,直接操作会影响原数据)
- 获取目标键对应的数值
- 删除拷贝对象里原有的目标键
- 将数值作为新键,原键作为新值添加到拷贝对象中
- 返回这个处理后的新对象
具体代码实现
function swapKeyAndValue(obj, key) { // 用展开运算符创建原对象的浅拷贝,也可以用 Object.assign({}, obj) 替代 const result = { ...obj }; // 拿到要交换的键对应的value const targetValue = result[key]; // 删除原来的键 delete result[key]; // 把value作为新键,原key作为值存入新对象 result[targetValue] = key; return result; }
测试示例
var instructor = { name: 'Elie', job: 'Instructor' }; console.log(swapKeyAndValue(instructor, 'name')); // 输出: { job: "Instructor", Elie: "name" } console.log(swapKeyAndValue(instructor, 'job')); // 输出: { name: "Elie", Instructor: "job" }
补充说明
如果你的运行环境不支持ES6的展开运算符,就用Object.assign来创建拷贝:
const result = Object.assign({}, obj);
这样同样能创建原对象的浅拷贝,保证原对象不受影响。
内容的提问来源于stack exchange,提问作者Cody Wirth
相关产品推荐
相关产品推荐

