首页 > 解决方案 > 用值交换键

问题描述

我是 JavaScript 新手,我试图用它的值交换一个键。但删除操作员似乎并没有真正删除该部分。我可能这样做是一种低效的方式,但请解释为什么删除有效但无效?以及如何将交换的价值加回来。提前致谢。

function swapKeyAndValue(obj,key)
{
  for(let x of Object.keys(obj))
  {
    if (x == key){
      console.log(obj);
      let tempkey = x; //where tempkey is the key: name
      let tempval = obj[x]; //where tempval is  value:ellie
      delete obj.x;
      console.log(obj.x); //outputs undefined
      console.log(obj); //outputs the obj with the deleted value?
      console.log(obj.x); //outputs undefined
      obj.tempkey=tempval;
      //console.log(obj);
    }

  }
}
var instructor = { name: 'Elie', job: 'Instructor' };
swapKeyAndValue(instructor, 'name');
// {Elie: 'name', job: "Instructor"}

标签: javascriptobjectkey-value

解决方案


您不需要使用 Object.keys 来交换一个键值。您可以为此使用括号表示法 [ ]。

function swapKeyAndValue(obj,key)
{
  let value=obj[key]
  obj[value]=key;
  delete obj[key];
  console.log(obj);
}
var instructor = { name: 'Elie', job: 'Instructor' };
swapKeyAndValue(instructor, 'name');
// {Elie: 'name', job: "Instructor"}


推荐阅读