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

Ruby中按指定顺序比较数组,获取已执行的最新构建ID

解决按构建时间顺序查找最新已执行构建ID的问题

首先明确需求:我们有两个数组,list1是按构建时间从新到旧排序的构建ID(首元素最新),list2是已执行过的构建ID集合。我们需要按list1的顺序,找到第一个出现在list2中的构建ID,这个就是最新的已执行构建。

核心思路

因为list1已经是从新到旧排序,所以我们只需要按顺序遍历list1的每个元素,检查它是否存在于list2中。第一个匹配到的元素就是我们要找的结果——毕竟它是list1里最新的、同时又在已执行列表里的构建。

代码实现(Python示例)

这里提供两种简洁的实现方式:

方式1:普通循环遍历

list1 = ["009n1", "009d5", "006d4", "001s5", "008n3"]
list2 = ["006d4", "001s5", "008n3", "006j1", "004k1"]

latest_executed = None
for build_id in list1:
    if build_id in list2:
        latest_executed = build_id
        break  # 找到第一个匹配项就停止,不用继续遍历

print(latest_executed)  # 输出:006d4

方式2:用next()结合生成器表达式(更简洁)

list1 = ["009n1", "009d5", "006d4", "001s5", "008n3"]
list2 = ["006d4", "001s5", "008n3", "006j1", "004k1"]

# 把list2转成集合可以提升查找效率,尤其是当list2元素很多的时候
executed_set = set(list2)
latest_executed = next((build for build in list1 if build in executed_set), None)

print(latest_executed)  # 输出:006d4

注意:把list2转换成集合set是因为集合的成员检查时间复杂度是O(1),比列表的O(n)高效很多,当list2元素数量大的时候,这个优化很有用。

为什么这个方法可行?

因为list1的顺序是严格的新→旧,所以第一个匹配到的元素必然是所有已执行构建中最新的那个,完全符合你的预期结果006d4。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 13:22:44