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

在JavaScript中如何实现对象反转 完成键值的互相转换

JavaScript对象键值互换实现方案

你之前使用的Array.prototype.reverse是针对数组顺序反转的API,不支持普通对象的键值互换逻辑,调用方式也不符合该API的入参要求,无法得到预期结果。

实现方案

方案1:ES6+ 极简实现(推荐)

使用Object.entries+map+Object.fromEntries组合实现,代码简洁易读:

const originalObj = {one:1, two:2, three:3, four:4};
const swappedObj = Object.fromEntries(
  Object.entries(originalObj).map(([key, value]) => {
    // 匹配示例中3对应'tree'的自定义映射可加如下判断,无特殊需求可以去掉
    if (key === 'three') return [value, 'tree']
    return [value, key]
  })
);

执行后swappedObj的结果就是你需要的{1:'one',2:'two',3:'tree',4:'four'}。

方案2:兼容低版本ES的实现

如果需要兼容不支持ES6+语法的运行环境,可以用for...in遍历实现:

var originalObj = {one:1, two:2, three:3, four:4};
var swappedObj = {};
for (var key in originalObj) {
  if (originalObj.hasOwnProperty(key)) { // 过滤原型链上的继承属性
    var val = originalObj[key];
    swappedObj[val] = key === 'three' ? 'tree' : key;
  }
}

注意事项

  • 普通对象的键只能是字符串、数字、Symbol类型,所以原对象的值需要是以上三种类型才能正常作为新对象的键
  • 如果原对象存在多个相同的值,后遍历到的键会覆盖之前的映射结果

内容的提问来源于stack exchange,提问作者user17446822

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:45:03