如何匹配两个对象数组指定键值并返回符合条件的目标数组?
实现两个数组的匹配筛选
需求:基于arrayOne中的debtor_account值,筛选arrayTwo中account_number匹配的项,最终得到仅包含匹配对象的新数组,用于获取label和currency_name字段。
实现步骤
- 提取唯一账户号集合:从
arrayOne中提取所有不重复的debtor_account值,存入Set结构(相比数组,Set的查找效率为O(1),适合大数据量场景) - 筛选匹配账户:遍历
arrayTwo,保留account_number存在于上述集合中的项
代码实现
// 提取arrayOne中所有唯一的debtor_account const debtorAccounts = new Set(arrayOne.map(item => item.debtor_account)); // 筛选arrayTwo中匹配的项 const matchedAccounts = arrayTwo.filter(account => debtorAccounts.has(account.account_number));
输出结果
根据提供的示例数据,matchedAccounts最终会包含以下两个对象:
[ { "account_number": "45701229351", "currency_code": "EUR", "currency_name": "Euro", "balance": "9998549.0", "has_transactions": true }, { "account_number": "44635890652", "currency_code": "EUR", "currency_name": "Euro", "balance": "0.0", "has_transactions": false, "label": "Marco euro test label" } ]
补充说明
- 如果数组数据量较小,也可以直接用
array.some()实现筛选,但性能略差:const matchedAccounts = arrayTwo.filter(account => arrayOne.some(item => item.debtor_account === account.account_number) ); - 确保
debtor_account和account_number的类型一致(示例中均为字符串),避免类型不匹配导致的筛选失败
内容的提问来源于stack exchange,提问作者user19625670
相关产品推荐
相关产品推荐

