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

Ruby中普通数组与多维数组值对比获取对应索引的实现

实现方案

核心思路是先将arr2的嵌套结构展平,过滤掉arr1中不存在的元素后,再批量获取对应索引即可。

基础易读版写法

arr1 = [1,2,3,4,5,6]
arr2 = [[2,4],12]

# 展平arr2的嵌套结构,筛选出arr1中存在的目标值
target_values = arr2.flatten.select { |val| arr1.include?(val) }
# 遍历目标值获取对应索引
result = target_values.map { |val| arr1.index(val) }

p result # 输出 [1, 3]

单行简写版

arr1 = [1,2,3,4,5,6]
arr2 = [[2,4],12]

result = arr2.flatten.filter_map { |val| arr1.index(val) if arr1.include?(val) }
p result # 输出 [1, 3]

注意事项

  • 如果arr1中存在重复元素,index方法只会返回第一个匹配元素的索引,符合示例场景的预期
  • 默认flatten会展开所有层级的嵌套数组,如果仅需要展开指定层数,可以传入层级参数,例如flatten(1)仅展开第一层嵌套

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:06:03