javascript - 用值交换键
问题描述
我是 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"}
解决方案
您不需要使用 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"}
推荐阅读
- c# - 如何在 UWP 中更改特殊字符的颜色
- amazon-web-services - 如何在 Route53 中将多个区域 Load-Balancers Alias 记录设置为单个名称?
- php - PHP在迭代剧集作者对象时将唯一的用户数组添加到新创建的数组
- python - 饼图未在烧瓶应用程序中正确呈现
- node.js - findall include 里面 include by use Sequelize
- sql-server - SQL Server 代理找不到备份作业的证书
- cypress - 赛普拉斯测试 - 用于 URL 匹配
- c++ - 多个类的通用调度程序
- javascript - 如何使用 get 方法从 response.data 中提取道具
- facebook - 无法使用 Facebook Graph API 阻止用户访问页面