Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 - Fatal编程技术网

Javascript 需要在两个数组之间映射数据

Javascript 需要在两个数组之间映射数据,javascript,arrays,Javascript,Arrays,需要一些帮助来解决基本任务 我有两个对象数组 const firstArr = [ {id: 1, action: 'pending'}, {id: 2, action: 'pending'}, {id: 3, action: 'pending'}, ]; const secondArr = [ {id: 1, action: 'accepted'}, {id: 2, action: 'accepted'}, {id: 3, action: 'accepted'},

需要一些帮助来解决基本任务

我有两个对象数组

const firstArr = [
  {id: 1, action: 'pending'},
  {id: 2, action: 'pending'},
  {id: 3, action: 'pending'},
];

const secondArr = [
  {id: 1, action: 'accepted'},
  {id: 2, action: 'accepted'},
  {id: 3, action: 'accepted'},
  {id: 566, action: 'accepted'},
  {id: 333, action: 'accepted'},
  {id: 234, action: 'accepted'},
];

我需要在第二个数组中找到第一个数组中ID相等的所有对象,并将第二个数组中的“action”属性更改为第一个数组中的“action”属性

const firstArr=[
{id:1,操作:'pending'},
{id:2,操作:'pending'},
{id:3,操作:'pending'},
];
const secondArr=[
{id:1,操作:'已接受'},
{id:2,操作:'已接受'},
{id:3,操作:'已接受'},
{id:566,操作:'已接受'},
{id:333,操作:'已接受'},
{id:234,操作:'已接受'},
];
第二个Arr.forEach((项目,索引)=>{
const fa=firstArr.find(i=>i.id==item.id);
if(fa)
secondArr[index].action=fa.action
})

log(secondArr)
您可以收集所有操作并用所需的值映射新对象

const
firstArr=[{id:1,操作:'pending'},{id:2,操作:'pending'},{id:3,操作:'pending'}],
secondArr=[{id:1,action:'accepted'},{id:2,action:'accepted'},{id:3,action:'accepted'},{id:566,action:'accepted'},{id:333,action:'accepted'},{id:234,action:'accepted'}],
states=Object.fromEntries(firstArr.map(({id,action})=>[id,{action}]),
result=secondArr.map(o=>({…o,…states[o.id]}));
控制台日志(结果)
.as控制台包装{max height:100%!important;top:0;}
您可以使用。遍历第一个数组,将id设置为键,将action设置为值,并将其放入Map对象中。然后遍历第二个数组并在Map对象中查找id。如果找到id,则更改操作

const firstArr=[
{id:1,操作:'pending'},
{id:2,操作:'pending'},
{id:3,操作:'pending'},
];
const secondArr=[
{id:1,操作:'已接受'},
{id:2,操作:'已接受'},
{id:3,操作:'已接受'},
{id:566,操作:'已接受'},
{id:333,操作:'已接受'},
{id:234,操作:'已接受'},
];
常量映射=新映射();
firstArr.forEach(({id,action})=>map.set(id,action));
const ret=secondArr.map((x)=>
map.has(x.id)?{…x,action:map.get(x.id)}:{…x}
);

控制台日志(ret)你试过什么?在这方面有许多类似的问题。请看,这回答了你的问题吗?这个实现看起来很优雅