Javascript 根据数组更改对象键
我有一个对象和两个数组。我想根据Javascript 根据数组更改对象键,javascript,arrays,object,Javascript,Arrays,Object,我有一个对象和两个数组。我想根据arr2更改object键,object键和arr1值是相同的,而arr1和arr2数组中值的位置是相同的,但不是值本身,而我不想问如何解决它,我想知道该如何解决这个问题,谢谢你抽出时间 const object = { name1: "some value", name3: "some value", name2: "some value", etc...} const arr1 =
arr2
更改object
键,object键和arr1
值是相同的,而arr1
和arr2
数组中值的位置是相同的,但不是值本身,而我不想问如何解决它,我想知道该如何解决这个问题,谢谢你抽出时间
const object = {
name1: "some value",
name3: "some value",
name2: "some value",
etc...}
const arr1 = ["name1", "name2", "name3"]
const arr2 = ["Name1", "Name2", "Name3"]
预期结果
const newObject = {
Name1: "some value",
Name3: "some value",
Name2: "some value",
etc...}
我假设您正在通过
arr1
和arr2
中的位置映射它们。
只需运行一个循环
const oldObject={
名称1:“一些价值”,
名称3:“一些价值”,
名称2:“一些价值”,
};
常量arr1=[“name1”、“name2”、“name3”];
常量arr2=[“Name1”、“Name2”、“Name3”];
var newObj={};
对于(变量i=0;i您可以使用reduce()
const对象={
名称1:“一些价值”,
名称3:“一些价值”,
名称2:“一些价值”
}
常量arr1=[“名称1”、“名称2”、“名称3”]
常量arr2=[“名称1”、“名称2”、“名称3”]
const res=arr1.reduce((ac,a,i)=>(ac[arr2[i]]=object[a],ac),{});
console.log(res)
您可以使用reduce:
const对象={
名称1:“一些价值”,
名称3:“一些价值”,
名称2:“一些价值”,
}
常量arr1=[“名称1”、“名称2”、“名称3”]
常量arr2=[“名称1”、“名称2”、“名称3”]
const newObj=arr1.reduce((acc,value,index)=>{
acc[arr2[索引]]=对象[值]
返回acc
}, {})
console.log(newObj)
您只需执行以下操作:
var output={};
arr1.forEach(function(el, index){
output[arr2[index]] = object[el];
}, this);
假设要保留新对象上arr1
上不存在的键名。然后,您可以首先在旧名称和新名称之间创建一个映射(如果ES6
不是您的选项,请在此处使用对象进行映射)。然后可以遍历with以生成新对象,其中只有相关的键名称映射到新的键名称,其余的键名称将保留
const obj={
名称1:“某些值1”,
名称3:“某些值2”,
名称2:“某些值3”,
名称4:“某些值4”,
名称5:“某些值5”
}
常量arr1=[“name1”、“name2”、“name3”];
常量arr2=[“Name1”、“Name2”、“Name3”];
//在旧名称和新名称之间创建映射。
让keysMap=newmap(arr1.Map((key,idx)=>[key,arr2[idx]]);
//生成新对象,保留未映射的关键帧名称。
让newObj=Object.entries(obj.reduce)(acc[k,v])=>
{
acc[keysMap.has(k)→keysMap.get(k):k]=v;
返回acc;
}, {});
console.log(newObj)代码>
.as控制台{背景色:黑色!重要;颜色:石灰;}
.作为控制台包装器{max height:100%!important;top:0;}
您可以通过以下方式执行一行操作:
const对象={
名称1:“某种价值A”,
名称3:“某些值B”,
名称2:“某些值C”
}
常量old=[“名称1”、“名称2”、“名称3”]
常量键=[“Name1”、“Name2”、“Name3”]
让result=Object.fromEntries(old.map((x,i)=>[keys[i],Object[x]]))
console.log(result)
因此,您想要一个新对象,其中arr1
上的键名映射到arr2
上的键名,其余键保持原样?我需要一个新对象,该对象具有旧对象值,但所有键都被arr2
替换,由于arr1
和arr2
值的放置在我需要的地方,arr1
值名称与旧对象键相同。