【发布时间】:2013-02-02 21:00:20
【问题描述】:
我有一个数组,我有一个数组,其中包含第一个数组中某些元素的索引。从第一个数组中获取元素的最佳方法是什么?
我在做:
result = []
indexes.each { |current| result << my_array[current] }
但应该有更好的方法..
【问题讨论】:
我有一个数组,我有一个数组,其中包含第一个数组中某些元素的索引。从第一个数组中获取元素的最佳方法是什么?
我在做:
result = []
indexes.each { |current| result << my_array[current] }
但应该有更好的方法..
【问题讨论】:
你可以使用Array#map:
indexes.map { |i| my_array[i] }
或者更好,Array#values_at
my_array.values_at(*indexes)
* 符号将数组提取为传递给方法的参数。
【讨论】:
values_at 是最快的,顺便说一句。根据基准测试结果,它比 map 和 push 快了约 2 倍,但是,它不那么“人性化”。