我们有一个数组,说:
my_arr = [121, 23, 46, 91, 38, 140]
我们还有索引数组:
indxs = [1, 2, 4]
我了解values_at
方法,但是它不接受数组,但是可以接受多个值,证明:https://ruby-doc.org/core-2.5.1/Array.html#method-i-values_at
也许您可以给我一个如何处理values_at
的线索。预先感谢!
编辑: 我们有2个答案,所以我做了一个基准测试(1000次迭代,array.size = 20,indexs.size = 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)
答案 0 :(得分:6)
您可以如下所示展开阵列:
my_arr = [121, 23, 46, 91, 38, 140]
indxs = [1, 2, 4]
my_arr.values_at(*indxs)
# => [23, 46, 38]
答案 1 :(得分:3)
作为替代:
my_arr = [121, 23, 46, 91, 38, 140]
indxs = [1, 2, 4]
indxs.map { |i| my_arr[i] }
#=> [23, 46, 38]