如何在JavaScript中从另一个字典的键更改字典的键?

如何在JavaScript中从另一个字典的键更改字典的键?,javascript,dictionary,Javascript,Dictionary,我有一本字典dict1:{Name:“Alex”,3:“61”}。我创建了一个重复的dictionarydict2,其中包含相同的键值对。我将dict2作为一个参数发送给一个函数,然后将其转换为这些值:dict2={1:“Alex”,未定义:“61”} 有人能帮我写一段代码,把未定义的代码替换成原来的dict中的代码吗?最后一句话必须是:dict={1:“Alex”,3:“61”} 获取并存储属性值“未定义”,删除“未定义”属性;迭代dict1的属性值,如果属性值与存储值匹配,则将dict2处的

我有一本字典
dict1:{Name:“Alex”,3:“61”}
。我创建了一个重复的dictionary
dict2
,其中包含相同的键值对。我将dict2作为一个参数发送给一个函数,然后将其转换为这些值:
dict2={1:“Alex”,未定义:“61”}

有人能帮我写一段代码,把未定义的代码替换成原来的dict中的代码吗?最后一句话必须是:
dict={1:“Alex”,3:“61”}


获取并存储属性值
“未定义”
删除
“未定义”
属性;迭代
dict1
的属性值,如果属性值与存储值匹配,则将
dict2
处的属性设置为
dict1
处匹配的属性名称,将存储变量设置为设置属性的值

dict1={
姓名:“亚历克斯”,
3: "61"
};
第2条={
1:“亚历克斯”,
未定义:“61”
};
设{undefined:val}=dict2;
删除第2条[“未定义”];
for(让[key,prop]的Object.entries(dict1)){
如果(prop==val)dict2[key]=val;
}

console.log(dict2)
获取并存储属性值
“未定义”
删除
“未定义”
属性;迭代
dict1
的属性值,如果属性值与存储值匹配,则将
dict2
处的属性设置为
dict1
处匹配的属性名称,将存储变量设置为设置属性的值

dict1={
姓名:“亚历克斯”,
3: "61"
};
第2条={
1:“亚历克斯”,
未定义:“61”
};
设{undefined:val}=dict2;
删除第2条[“未定义”];
for(让[key,prop]的Object.entries(dict1)){
如果(prop==val)dict2[key]=val;
}
console.log(dict2)您可以执行以下操作:

  • 在第一个对象(dict1)上迭代并创建一个新对象,比如临时对象,其中键和值是反向的。所以temp看起来像{Alex:Name,61:3}
  • 迭代dict2并在键“undefined”处获取值(本例中为61),然后从反向对象读取值以获取3。将其用作键(3)并输入值(61)
  • 从dict2中删除键“未定义”
  • var dict1={
    姓名:“亚历克斯”,
    3: "61"
    };
    变量2={
    1:“亚历克斯”,
    未定义:“61”
    };
    var temp={};
    用于(第1条中的变量i){
    温度[1[i]]=i;
    }
    for(dict2中的var键){
    如果(键==“未定义”){
    var val=dict2[键];
    dict2[temp[val]]=val;
    }
    }
    删除第2条[“未定义”];
    console.log(dict2)您可以执行以下操作:

  • 在第一个对象(dict1)上迭代并创建一个新对象,比如临时对象,其中键和值是反向的。所以temp看起来像{Alex:Name,61:3}
  • 迭代dict2并在键“undefined”处获取值(本例中为61),然后从反向对象读取值以获取3。将其用作键(3)并输入值(61)
  • 从dict2中删除键“未定义”
  • var dict1={
    姓名:“亚历克斯”,
    3: "61"
    };
    变量2={
    1:“亚历克斯”,
    未定义:“61”
    };
    var temp={};
    用于(第1条中的变量i){
    温度[1[i]]=i;
    }
    for(dict2中的var键){
    如果(键==“未定义”){
    var val=dict2[键];
    dict2[temp[val]]=val;
    }
    }
    删除第2条[“未定义”];
    
    console.log(dict2)
    该方法返回OP中描述的预期结果。您可以选择使用
    JSON.stringify()
    .replace()
    JSON.parse(JSON.stringify(dict2.replace(/undefined/,3))
    该方法返回OP中描述的预期结果。您也可以选择使用
    JSON.stringify()
    .replace()
    JSON.parse(JSON.stringify(dict2.replace(/undefined/,3))
    …此代码仅适用于一个未定义的值。当我尝试使用这本词典时,var dict2={1:“Alex”,未定义:“61”,未定义:“London”},下面的代码是failingvar dict1={1:“Alex”,年龄:“61”,家庭:“伦敦”};var dict2={1:“Alex”,未定义:“61”,未定义:“London”};以下代码不工作。你能修复它吗?@Kenz在javascript中,对象只能有一个键。在本例中,有两处未定义为键。第二个将覆盖第一个。因此您的
    dict2
    看起来像{1:“Alex”,未定义的“London”},换句话说,您的对象只能有一个未定义的键,在这种情况下,解决方案有效。对于可以获取键值的dict,有什么替代方案pairs@Kenz可以使用对象,但必须确保键不同。是否可以创建像undefined1、undefined2等键,而不是
    undefined
    。在您的情况下?…此代码仅适用于一个未定义的值。当我尝试使用这本词典时,var dict2={1:“Alex”,未定义:“61”,未定义:“London”},下面的代码是failingvar dict1={1:“Alex”,年龄:“61”,家庭:“伦敦”};var dict2={1:“Alex”,未定义:“61”,未定义:“London”};以下代码不工作。你能修复它吗?@Kenz在javascript中,对象只能有一个键。在本例中,有两处未定义为键。第二个将覆盖第一个。因此您的
    dict2
    看起来像{1:“Alex”,未定义的“London”},换句话说,您的对象只能有一个未定义的键,在这种情况下,解决方案有效。对于可以获取键值的dict,有什么替代方案pairs@Kenz可以使用对象,但必须确保键不同。在您的情况下,是否可以创建像undefined1、undefined2等键而不是
    undefined
    dict1={Name:"Alex", 3: "61"};
    dict2={Name:"Alex", 3: "61"}; //created a copy of original dictionary
    function(dict2){
         //some function that converts dict2 to the following value.
    }
    console.log(dict2);   //dict2={1: "Alex",undefined: "61"}
    
    //now i want to write the code to substitute the undefined key-value pair to the one present in the original.
    //my final dict has to be as follows:
    dict={1: "Alex",3: "61"};