js两个数组 arr 和 arr2 中查找匹配的对象

function findMatchByIdsAndIdsd(arr, arr2) {  
  // 创建一个映射(Map)或对象来快速查找 arr2 中的 idsd  
  const idsdMap = arr2.reduce((acc, obj) => {  
    acc[obj.idsd] = true; // 只关心是否存在,不关心值  
    return acc;  
  }, {});  
  
  // 遍历 arr 并找到 ids 也在 arr2 的 idsd 中存在的对象  
  return arr.find(obj => idsdMap[obj.ids]);  
}  
  
// arr2 数组(注意:这里我保留了 idsd,但通常你会希望它们都是 ids)  
const arr2 = [  
  { idsd: 1, name: '22张三' },  
  { idsd: 2, name: '张三22' },  
  { idsd: 1, name: '222张三22' }  
];  
  
// arr 数组  
const arr = [  
  { ids: 2221, name: '张三', arr: [{ id: 2, name: '张涨' }] },  
  { ids: 2, name: '张三22', arr: [{ id: 17, name: '张涨' }] }, // 这是我们要找的对象  
  { ids: 111, name: '张三22', arr: [{ id: 7, name: '张涨' }] }  
];  
  
// 调用函数  
const matchedObj = findMatchByIdsAndIdsd(arr, arr2);  
  
if (matchedObj) {  
  console.log(matchedObj);  
} else {  
  console.log('没有找到 ids 在 arr 中且 idsd 在 arr2 中存在的匹配对象。');  
}

运行的结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值