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
相关产品推荐
相关产品推荐

