繁体   English   中英

ruby soft delete_if方法?

[英]ruby soft delete_if method?

当我在ruby中有一个数组时,我可以在其上运行一个delete_if块。 问题是它从我的数组中删除了元素。 我想要相同的功能,除了不对原始数组进行更改,而是返回一个删除了对象的新数组。

例如:

myarr = ["foo", 5, 7, "bar"]
newarr = myarr.delete_if { |e| e.is_a?(String) }

将[5,7]返回到newarr ,但也会对原始数组myarr进行修改。

我基本上寻找的是

myarr = ["foo", 5, 7, "bar"]
newarr = myarr.soft_delete_if { |e| e.is_a?(String) }

因此newarr将具有[5,7]的值,但myarr仍将具有相同的值。

这样的事情存在吗? 非常感谢!

使用reject

> newarr = myarr.reject{ |e| e.is_a?(String) }
=> [5, 7]
> myarr
=> ["foo", 5, 7, "bar"]

还有一个名为select的相关方法,它以与reject相同的方式工作,除了它保留谓词返回true的元素而不是拒绝它们。

你想要Array#reject

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM