来自第一个数组的字段值以从 Javascript 中的第二个数组中获取值

Field value from first Array to get the values from the Second Array in Javascript

我有两个数组,arr1 有字段,我只需要从中获取字段值。应使用 arr2 检查字段值,如果它与键的名称匹配,则需要创建如下输出:

let arr1 = [{
      field: "name",
      value: "some1",
      value1: "some2"
    },{
      field: "job",
      value: "some1",
      value1: "some2"
    },{
      field: "from",
      value: "some1",
      value1: "some3"
    }
    ];
    
    let arr2 = [{
      name: "John",
      job: "engineer",
      address: "abc",
      from: "boston",
      gender: "male"
    },{
      name: "Steph",
      job: "worker",
      address: "uhuh",
      from: "uk",
      gender: "male"
    },{
      name: "dor",
      job: "farmer",
      address: "gdgs",
      from: "us",
      gender: "female"
    }
    ];

需要输出:

[{
  name: "John",
  job: "engineer",
  from: "boston"
},{
  name: "Steph",
  job: "worker",
  from: "uk"
},{
  name: "Ram",
  job: "farmer",
  from: "us"
}
];

我试过这样做,但我只得到 arr2 中的最后一个值。

for(let index = 0; index < arr2.length; index++){
  for(let newi = 0; newi < arr1.length; newi++){
    newObj = arr1[newi].field;
    final[newObj] = arr2[index][newObj]
    last.push(final[newObj])
   
  }
  console.log(last)
}

这样做,使用 Array.map & Array.reduce

const arr1 = [{  field: "name",  value: "some1",  value1: "some2"},{  field: "job",  value: "some1",  value1: "some2"},{  field: "from",  value: "some1",  value1: "some3"}];
const arr2 = [{  name: "John",  job: "engineer",  address: "abc",  from: "boston",  gender: "male"},{  name: "Steph",  job: "worker",  address: "uhuh",  from: "uk",  gender: "male"},{  name: "dor",  job: "farmer",  address: "gdgs",  from: "us",  gender: "female"}];

const result = arr2.map(item => arr1.reduce((acc, {field}) => {
  acc[field] = item[field];
  return acc;
}, {}));

console.log(result);

使用 mapObject.assign

const arr1 = [{  field: "name",  value: "some1",  value1: "some2"},{  field: "job",  value: "some1",  value1: "some2"},{  field: "from",  value: "some1",  value1: "some3"}];
const arr2 = [{  name: "John",  job: "engineer",  address: "abc",  from: "boston",  gender: "male"},{  name: "Steph",  job: "worker",  address: "uhuh",  from: "uk",  gender: "male"},{  name: "dor",  job: "farmer",  address: "gdgs",  from: "us",  gender: "female"}];


const fields = arr1.map(({ field }) => field);
const output = arr2.map((item) =>
  Object.assign({}, ...fields.map((field) => ({ [field]: item[field] })))
);


console.log(output)