Tengo dos arreglos de objetos, arr1 y arr2
si taskId e id son iguales, recupérelos de arr1
Cómo verificar según la propiedad de arr1 y arr2 en javascript
var arr1= [ {"name":"refresh task","memberIds":[981],"dueOn":"2022-08-30","taskId":19}, {"name":"ref one","memberIds":[981,982],"dueOn":"2022-08-25","taskId":null} ] var arr2 =[ { "country": "IN", "tasks": [ {id: 19, "name": "abc" }, {id: 20, "name": "xyz" } ] } ] I tried var result = arr1.filter(e=>e.taskId===(arr2.map(i=>i.tasks.map(t=>t.id)) Expected Output [ {"name":"refresh task","memberIds":[981],"dueOn":"2022-08-30","taskId":19} ]Set , Array#flatMap y [ Array#map ][3], get the list of task ids in arr2``Array#filter y Set#has , devuelva la matriz resultante donde taskId está en el conjunto anterior const arr1= [ {"name":"refresh task", "memberIds":[981], "dueOn":"2022-08-30", "taskId":19}, {"name":"ref one", "memberIds":[981,982], "dueOn":"2022-08-25", "taskId":null} ], arr2 =[ { "country": "IN", "tasks": [ {"id": 19, "name": "abc"}, {"id": 20, "name": "xyz"} ] } ]; const taskIdSet = new Set( arr2.flatMap(({ tasks = [] }) => tasks.map(({ id }) => id)) ); const result = arr1.filter(({ taskId }) => taskIdSet.has(taskId)); console.log(result);EDITAR: para obtener "Tengo dos matrices de objetos, arr1 y arr2 si taskId e id no son iguales, luego recupere de arr2":
const arr1= [ {"name":"refresh task", "memberIds":[981], "dueOn":"2022-08-30", "taskId":19}, {"name":"ref one", "memberIds":[981,982], "dueOn":"2022-08-25", "taskId":null} ], arr2 =[ { "country": "IN", "tasks": [ {"id": 19, "name": "abc"}, {"id": 20, "name": "xyz"} ] } ]; const taskIdSet = arr1.reduce((taskIdSet, { taskId }) => { if(taskId !== null) { taskIdSet.add(taskId); } return taskIdSet; }, new Set); const result = arr2 .flatMap(({ tasks = [] }) => tasks) .filter(({ id }) => !taskIdSet.has(id)); console.log(result);Esto también funciona:
var result = arr1.filter(e=>{ for(let obj of arr2){ for(let task of obj.tasks){ return e.taskId === task.id; } } })