Ruby通过索引访问多个数组元素(子数组)

bli*_*iof 17 ruby arrays

我有一个数组,我有一个数组,其中包含第一个数组中某些元素的索引.从第一个数组中获取元素的最佳方法是什么?

我在做:

result = []
indexes.each { |current| result << my_array[current] }
Run Code Online (Sandbox Code Playgroud)

但应该有更好的方法..

Sam*_*ite 40

你可以使用Array#map:

indexes.map { |i| my_array[i] }
Run Code Online (Sandbox Code Playgroud)

甚至更好,Array#values_at

my_array.values_at(*indexes)
Run Code Online (Sandbox Code Playgroud)

*符号将数组提取到传递给方法的参数中.

  • 顺便说一下,“values_at”是最快的。根据基准测试结果,它比“map”和“push”快约两倍,尽管如此,它不太“人性化”。 (2认同)