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

如何在Ruby中根据索引从数组中获取多个值?

嗨,我来帮你搞定这个Ruby数组的取值问题~

用values_at获取指定索引元素的解决方案

你说得没错,values_at本身不直接接收数组作为参数,但它支持传入多个独立的索引值,这时候我们可以用Ruby的数组展开操作符*,把索引数组拆成单个参数传递给它,完美适配这个方法!

用你给出的数组举个实际例子:

my_arr = [121, 23, 46, 91, 38, 140]
indxs = [1, 2, 4]

# 用*展开索引数组,将其转为多个独立参数传给values_at
target_elements = my_arr.values_at(*indxs)
puts target_elements.inspect # 输出结果:[23, 46, 38]

这个展开操作符的作用就是把indxs数组里的每个元素都单独提取出来,作为values_at的参数,完全符合方法的参数要求。

两种方案的基准测试对比

之后我针对values_at和map直接取值这两种方案做了基准测试,测试条件为:1000次迭代,原数组长度20,索引数组长度4,测试结果如下:

user     system      total        real
values_at  0.004502   0.000000   0.004502 (  0.004476)
map[i]     0.005878   0.000000   0.005878 (  0.006968)

从结果能明显看到,values_at的性能要优于map直接取值的方式,尤其是实际运行时间(real列)的差距更为显著。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:35:36