使用Ruby删除数组中字符串的最佳方法

Sai*_*aev 13 ruby arrays

让我说我有这个数组:

array = ["str1", "str2", "str3", "str4", "str5", "str6", "str7", "str8"]
Run Code Online (Sandbox Code Playgroud)

我在做什么:

array.delete_if {|i| i == "str1" || i == "str3" || i == "str5"}
Run Code Online (Sandbox Code Playgroud)

我有:

["str2", "str4", "str6", "str7", "str8"]
Run Code Online (Sandbox Code Playgroud)

有什么更好的办法在红宝石做这个?

Ale*_*x D 32

你可以这样做:

array - %w{str1 str2 str3}
Run Code Online (Sandbox Code Playgroud)

请注意,这将返回一个带有"str1","str2""str3"删除的新数组,而不是array直接修改(如同delete_if).你可以array像这样简洁地重新分配新数组:

array -= %w{str1 str2 str3}
Run Code Online (Sandbox Code Playgroud)

  • `array - =%w [...]`会进行就地重新分配,但不会改变对原始数组的任何引用. (5认同)
  • 大家都知道,%w {word word2}不接受包含字符串的变量.我不知道,它不会从数组中删除字符串.我使用```array - = [variable_containing_string]``来使它工作 (2认同)