如何从一个数组中按值删除一个元素
我有一个Ruby中的元素数组
[2,4,6,3,8]
我需要移除值为3
的元素,例如
我怎么做呢?
327
14
我有一个Ruby中的元素数组
[2,4,6,3,8]
我需要移除值为3
的元素,例如
我怎么做呢?
我想我已经明白了:
借用评论中Travis的说法,这是一个更好的答案:
我修改了他的答案,看到3是他例子中数组的第三个元素。这可能会给那些没有意识到3在数组中处于第2位的人带来一些困惑。
另一个选择:
这导致了
我'不知道是否有人说过,但Array.delete()和-= value将删除Array中传递给它的值的每个实例。 为了删除特定元素的第一个实例,你可以做如下操作
可以有一个更简单的方法。 我'不是说这是最佳做法,但这是应该被认可的。
假设你想在一个数组中多处按值删除3。 我认为 ruby 的方法是使用 delete_if 方法来完成这个任务。
你也可以在'array of arrays'的情况下使用delete_if来删除元素。
希望这能解决你的疑问
我喜欢其他答案中提到的
-=[4]
的方式来删除值为4的元素。但是还有这种方法。
在"[基本数组操作][1]"中的某个地方提到了 "map "函数。
[1]: https://rubymonk.com/learning/books/1-ruby-primer/chapters/1-arrays/lessons/34-arrays-the-basics
你可以直接跑。
.delete_at(3)``3
这里是指位置。下面是一些基准。
而且又是一个更大的数组,包含很多重复的内容。
而更大的重复,更多的重复。
我改进了Niels'的解决方案
现在您可以使用
你也可以给它打补丁。 我一直不明白为什么Ruby对 "Hash "有一个 "except "方法,而对 "Array "没有。
现在你可以做。
或。
因此,当你有多个3的出现,而你只想删除第一个3的出现时,你可以简单地做一些事情,如下所示。
如果你也想让这个删除操作成为可链式操作,这样你就可以删除某个项目,然后继续对结果数组进行链式操作,请使用
tap
。首次发生的非破坏性清除。