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

C#中如何对比字符串数组与自定义类型集合并返回匹配对应字段值

实现方案

核心思路

  • 先将array2转换为firstName到lastName的哈希映射(字典),避免每次匹配都遍历整个array2,时间复杂度从O(n*m)优化到O(n+m)
  • 遍历array1的每个元素,从映射中取出匹配到的lastName,过滤掉无匹配的项即可得到结果

代码实现

TypeScript/JavaScript 版本

// 定义Person类型
type Person = {
  firstName: string;
  lastName: string;
}

const array1 = ["A", "B", "C", "D", "E"];
const array2: Person[] = [
  { firstName: "A", lastName: "Sam" },
  { firstName: "B", lastName: "Mark" },
  { firstName: "X", lastName: "Steve" },
  { firstName: "E", lastName: "Mike" }
];

// 生成firstName到lastName的映射表
const nameMap = new Map(array2.map(item => [item.firstName, item.lastName]));
// 匹配取值
const result = array1.filter(key => nameMap.has(key)).map(key => nameMap.get(key)!);

console.log(result); // 输出 ["Sam", "Mark", "Mike"]

如果是小数据量场景,也可以用简化写法:

const result = array2.filter(item => array1.includes(item.firstName)).map(item => item.lastName)

Python 版本

array1 = ["A", "B", "C", "D", "E"]
array2 = [
    {"firstName": "A", "lastName": "Sam"},
    {"firstName": "B", "lastName": "Mark"},
    {"firstName": "X", "lastName": "Steve"},
    {"firstName": "E", "lastName": "Mike"}
]

# 生成映射字典
name_map = {item["firstName"]: item["lastName"] for item in array2}
# 匹配取值
result = [name_map[key] for key in array1 if key in name_map]

print(result) # 输出 ['Sam', 'Mark', 'Mike']

特殊场景说明

如果array2存在多个相同firstName的元素,上述实现默认取最后一个出现的元素的lastName,如果需要保留所有匹配项,直接使用过滤遍历的写法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:36:03