You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React JS中如何比较两个对象并获取id_rt相同的行数据?

获取两个数组中id_rt相同的行数据

假设你的tempWilayahUser和wilayahUser都是包含对象的数组,每个对象都带有id_rt属性,这里提供几种实用的实现方式:

方式一:基础过滤(适合小数据量)

遍历其中一个数组,筛选出在另一个数组里存在相同id_rt的条目:

// 从tempWilayahUser里筛选出和wilayahUser有相同id_rt的项
const matchedFromTemp = this.state.tempWilayahUser.filter(tempItem => 
  this.state.wilayahUser.some(wilayahItem => wilayahItem.id_rt === tempItem.id_rt)
);

// 如果需要同时获取两个数组里的匹配项,分别筛选后合并即可
const matchedFromWilayah = this.state.wilayahUser.filter(wilayahItem => 
  this.state.tempWilayahUser.some(tempItem => tempItem.id_rt === wilayahItem.id_rt)
);
const allMatchedData = [...matchedFromTemp, ...matchedFromWilayah];

方式二:高性能匹配(适合大数据量)

先把其中一个数组的id_rt存入Set集合,再用集合来过滤,能大幅提升匹配效率:

// 先把wilayahUser的所有id_rt存到Set里
const rtIdSet = new Set(this.state.wilayahUser.map(item => item.id_rt));

// 快速筛选tempWilayahUser中id_rt存在于集合的项
const matchedItems = this.state.tempWilayahUser.filter(item => rtIdSet.has(item.id_rt));

方式三:配对相同id_rt的对应数据

如果需要把两个数组中id_rt相同的条目一一配对,可以用映射表实现:

// 先给wilayahUser创建id_rt到对应对象的映射
const wilayahRtMap = this.state.wilayahUser.reduce((map, item) => {
  map[item.id_rt] = item;
  return map;
}, {});

// 遍历tempWilayahUser,匹配对应id_rt的wilayahUser数据,组成配对数组
const pairedData = this.state.tempWilayahUser
  .filter(item => wilayahRtMap[item.id_rt])
  .map(item => ({
    tempData: item,
    wilayahData: wilayahRtMap[item.id_rt]
  }));

内容的提问来源于stack exchange,提问作者Ragil Pratama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 04:30:53