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

如何实现交换指定键值对并返回新JavaScript对象?

实现JavaScript对象指定键值交换的函数

嘿,我看你当前的代码确实没达到预期效果——返回数组完全不是你想要的对象结果,咱们一步步调整过来:

先说说你现有代码的问题

  • 错误地把result初始成了数组,而我们需要返回的是对象
  • 循环里直接把整个原对象push到数组,根本没处理键值对的交换逻辑

正确的实现思路

  1. 创建原对象的浅拷贝,避免修改原对象(对象是引用类型,直接操作会影响原数据)
  2. 获取目标键对应的数值
  3. 删除拷贝对象里原有的目标键
  4. 将数值作为新键,原键作为新值添加到拷贝对象中
  5. 返回这个处理后的新对象

具体代码实现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:00:22