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)代码>你试过什么?在这方面有许多类似的问题。请看,这回答了你的问题吗?这个实现看起来很优雅