我有两个数组:
["mo", "tu", "we", "th", "fr", "sa", "su"]
和[1, 5]
根据第二个数组的索引,从第一个数组创建一个新数组的最短、最干净的方法是什么?我想做这样的事情:
["mo", "tu", "we", "th", "fr", "sa", "su"][[1, 5]]
(这种方式不可能)
这将产生["tu", "sa"]
.
怎么可能做到这一点?提前致谢!
尝试如下使用Array#values_at
a = ["mo", "tu", "we", "th", "fr", "sa", "su"]
b= [1, 5]
c = a.values_at(*b)
# => ["tu", "sa"]
select
并且with_index
可以链接以从数组中提取某些元素:
["mo", "tu", "we", "th", "fr", "sa", "su"].select.with_index {|_, index| [1, 5].include?(index)}
# => ["tu", "sa"]
对于 Ruby 新手,这里有一些关于这个答案的注释:
with_index
方法可以与任何出色的 Ruby 迭代器链接,以访问索引(类似于each_with_index
)。在这种情况下,没有select_with_index
,所以我们使用select.with_index
。