gpt4 book ai didi

ruby - 如何删除特定索引后的所有元素

转载 作者:太空宇宙 更新时间:2023-11-03 17:06:17 27 4
gpt4 key购买 nike

给定:

n = 2
arr = %w(10 20 30 40 50)

这是一种删除索引 n 之后的所有数组元素的方法:

arr.delete_if {|num| arr.index(num) > n }
# => ["10", "20", "30"]

有没有其他方法可以在不遍历和比较条件的情况下从数组中删除所有元素?

最佳答案

Array#[]= 运算符派上用场:

arr[n+1 .. -1] = []

在 Ruby 2.6 中,您还可以使用无限范围:

arr[n+1 ..] = []

请注意,您的代码很慢,因为它在数组中搜索每个元素,因此是 O(n^2),但如果数组包含重复元素,也会出错。例如,对于 arr = %w(10 20 30 10 20),您的代码不会更改数组。这将是您的代码,只是速度更快且更正确(O(n);尽管上面的#[]= 解决方案更快更直接):

arr.delete_if.with_index { |num, idx| idx > n }

关于ruby - 如何删除特定索引后的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54434523/

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