Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据数组更改对象键_Javascript_Arrays_Object - Fatal编程技术网

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
值名称与旧对象键相同。