Javascript 比较基于一个对象键和其他对象值的对象,并使用映射功能将结果推送到新数组?

Javascript 比较基于一个对象键和其他对象值的对象,并使用映射功能将结果推送到新数组?,javascript,Javascript,我有两个对象数组,我想比较一个对象值和另一个对象键,并将结果推送到第三个数组。请帮忙 arr1 = [ {head: "first_name", value:"First Name"}, {head: "last_name", value:"Last Name"}, {head: "age", value:"Age"}]; arr2 = [ {car:"aa&q

我有两个对象数组,我想比较一个对象值和另一个对象键,并将结果推送到第三个数组。请帮忙

arr1 = [
{head: "first_name", value:"First Name"}, 
{head: "last_name", value:"Last Name"}, 
{head: "age", value:"Age"}];

arr2 = [
{car:"aa", xyz:"asdsa", abc:"dsds",first_name: "Jack", last_name: "Dan", age:"25"},
{car:"bb", xyz:"asdsa", abc:"dsds",first_name: "Mark", last_name: "Wood", age:"28"},
{car:"cc", xyz:"asdsa", abc:"dsds",first_name: "Carl", last_name: "R", age:"25"},
{ car:"dd", xyz:"asdsa", abc:"dsds",first_name: "Max", last_name: "P", age:"25"}
]

arr1.map(el=> {
arr2.map(elm => {
if(el.head === elm.object.key){
arr3.push(elm)
}
})
})

Expected output:
arr3 = arr2 = [
{first_name: "Jack", last_name: "Dan", age:"25"},
{first_name: "Mark", last_name: "Wood", age:"28"},
{first_name: "Carl", last_name: "R", age:"25"},
{first_name: "Max", last_name: "P", age:"25"}
]

这是一个不变的逻辑。经过测试,效果良好

const arr3 = arr2.map((item) => {
  const keys = arr1.map((keyObject) => keyObject.head);
  return keys.reduce((mem, key) => {
    mem[key] = item[key];
    return mem
  }, {})
})
下面是在控制台中执行的输出的快照


这是一种不变的逻辑。经过测试,效果良好

const arr3 = arr2.map((item) => {
  const keys = arr1.map((keyObject) => keyObject.head);
  return keys.reduce((mem, key) => {
    mem[key] = item[key];
    return mem
  }, {})
})
下面是在控制台中执行的输出的快照


1。在编写
forEach
代码时,不要使用
map
。2.没有
elm.object
3。您必须映射到
arr2
,使用
Object.values(arr1)
来组成新对象(您只需推送到一个新数组,但您想要的对象还不存在)1。在编写
forEach
代码时,不要使用
map
。2.没有
elm.object
3。您必须映射到
arr2
,使用
Object.values(arr1)
来组成新对象(您只需推到一个新数组,但您想要的对象还不存在),我可以知道它被否决的原因吗?。它产生准确的预期结果。结果输出具有arr2中的所有键值对,我只需要3个同样顺序的键值对。你能告诉我你想要的吗output@VishnuShenoy-我已附加了通过运行上述代码获得的输出的快照。它似乎只有预期的键,而不是所有的键。你确定代码没有产生预期的结果吗?我已经放弃了一个,结果值在arr3右侧。我已经编辑并将
const arr3=
添加到结果中。现在,结果将显示在
arr3
中。希望我是对的。请告诉我。我可以知道为什么被否决吗?。它产生准确的预期结果。结果输出具有arr2中的所有键值对,我只需要3个同样顺序的键值对。你能告诉我你想要的吗output@VishnuShenoy-我已附加了通过运行上述代码获得的输出的快照。它似乎只有预期的键,而不是所有的键。你确定代码没有产生预期的结果吗?我已经放弃了一个,结果值在arr3右侧。我已经编辑并将
const arr3=
添加到结果中。现在,结果将显示在
arr3
中。希望我是对的。请让我知道。