gpt4 book ai didi

Ruby - 如何从数组中弹出特定元素

转载 作者:数据小太阳 更新时间:2023-10-29 07:54:47 24 4
gpt4 key购买 nike

Ruby 中从数组中弹出特定元素的最简单方法是什么,类似于 .delete 方法

a.delete(element)

而不是弹出第一个/最后一个元素或使用 .slice?

更具体地说:例如,我可以做

case names.sample when "John", "Dave", "Sam"
a.delete(names.sample)
end

a 中删除其中一个名称当它作为 names 中的样本出现时

但是,我打算使用多个示例并使用 a.delete()将立即删除所有元素,而不是像 shuffle!.pop 产生的结果那样连续删除连续弹出元素的位置,因此无法再从a中选择名称作为样本在选择相同名称作为 name.sample 之后

我想知道在 Ruby 中连续弹出这些元素的最简单方法是什么,或者在这种情况下是否有可能。

最佳答案

Array 类定义了一个pop 方法。它返回并删除数组中的最后一个元素。

a = ["a", "b", "c"]
puts a.pop #=> "c"
puts a #=> ["a", "b"]

您可以选择将参数传递给 pop,指定弹出多少元素。

a = ["a", "b", "c"]
puts a.pop(2) #=> ["b", "c"]
puts a #=> ["a"]

针对您的最后一条评论,您可以使用 include?indexdelete_at 方法来实现此目的。假设您正在检查数组中的“b”:

a = ["a", "b", "c"]

value_index = a.index("b") #Returns the first occurring index of "b"
has_value = a.include?("b") #Returns whether "b" is in the list
a.delete_at(a.index("b")) if has_value #Removes "b" from the list

在此示例中,“has_value”将是 a 数组是否包含值“b”,而“value_index”将是“b”的第一次出现。这也将从列表中删除值“b”。

如果要删除 所有 个“b”,可以使用 include?indexdelete_at 使用 while 循环:

a = ["a", "b", "c", "a", "b", "c"]

while a.include?("b")
a.delete_at(a.index("b"))
end
#a will now be ["a", "c", "a", "c"]

另见 the documentation for Array .

关于Ruby - 如何从数组中弹出特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53355713/

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