gpt4 book ai didi

ruby - 如何引用 Array#delete_if 中元素的索引

转载 作者:数据小太阳 更新时间:2023-10-29 08:17:27 26 4
gpt4 key购买 nike

我想构建一个自定义方法Array#drop_every(n)(我知道这是猴子修补,我这样做是为了做功课),它返回一个新数组,省略每个第 n 个元素:

[4, 8, 15, 16, 23, 42].drop_every(2) # [4, 15, 23]

我想用 Array#delete_if 来实现它,但是通过引用索引而不是元素本身,(类似于 each_index)是这样的:

def drop_every(step)
self.delete_if { |index| index % step == 0 }
end

我该怎么做?我不坚持使用delete_if,我也看了drop_whilereject,欢迎其他建议。

最佳答案

您可以使用 with_index 方法返回枚举数,过滤您的集合,然后删除索引。

class Array
def drop_every(step)
self.each.with_index.select { |_, index| index % step == 0 }.map(&:first)
end
end

[4, 8, 15, 16, 23, 42].drop_every(2) # => [4, 15, 23]

关于ruby - 如何引用 Array#delete_if 中元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19317782/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com