Ich habe ein Array von Elementen in Ruby
[2,4,6,3,8]
Ich muss Elemente mit Wert entfernen 3
zum Beispiel
Wie kann ich das tun?
Ich habe ein Array von Elementen in Ruby
[2,4,6,3,8]
Ich muss Elemente mit Wert entfernen 3
zum Beispiel
Wie kann ich das tun?
Kompilieren aller verschiedenen Optionen für das Löschen in Ruby
löschen - Löscht übereinstimmende Elemente nach Wert. Wenn mehr als ein Wert übereinstimmt, werden alle gelöscht. Wenn Sie sich nicht um die Anzahl der Vorkommen kümmern oder sicher sind, dass nur ein einziges Vorkommen vorliegt, verwenden Sie diese Methode.
a = [2, 6, 3, 5, 3, 7]
a.delete(3) # returns 3
puts a # return [2, 6, 5, 7]
löschen_bei - Löscht das Element am angegebenen Index. Wenn Sie den Index kennen, verwenden Sie diese Methode.
# continuing from the above example
a.delete_at(2) # returns 5
puts a # returns [2, 6, 7]
löschen_wenn - Löscht jedes Element, für das block wahr ist. Dadurch wird das Array verändert. Array ändert sich sofort, wenn der Block aufgerufen wird.
b = [1, 2, 5, 4, 9, 10, 11]
b.delete_if {|n| n >= 10}. # returns [1, 2, 5, 4, 9]
zurückweisen - Es wird ein neues Array mit den Elementen zurückgegeben, für die der angegebene Block falsch ist. Die Reihenfolge wird dabei beibehalten.
c = [1, 2, 5, 4, 9, 10, 11]
c.reject {|n| n >= 10}. # returns [1, 2, 5, 4, 9]
ablehnen! - gleich wie löschen_wenn . Array darf sich nicht sofort ändern, wenn der Block aufgerufen wird.
Wenn Sie mehrere Werte aus einem Array löschen möchten, ist die beste Option die folgende.
a = [2, 3, 7, 4, 6, 21, 13]
b = [7, 21]
a = a - b # a - [2, 3, 4, 6, 13]
Sie können es auch mit einem Affen flicken. Ich habe nie verstanden, warum Ruby eine except
Methode für Hash
aber nicht für Array
:
class Array
def except value
value = value.kind_of(Array) ? value : [value]
self - value
end
end
Das können Sie jetzt tun:
[1,3,7,"436",354,nil].except(354) #=> [1,3,7,"436",nil]
Oder:
[1,3,7,"436",354,nil].except([354, 1]) #=> [3,7,"436",nil]
Wenn Sie also mehrere Vorkommen von 3 haben und nur das erste Vorkommen von 3 löschen wollen, können Sie einfach etwas wie unten tun.
arr = [2, 4, 6, 3, 8, 10, 3, 12]
arr.delete_at arr.index 3
#This will modify arr as [2, 4, 6, 8, 10, 3, 12] where first occurrence of 3 is deleted. Returns the element deleted. In this case => 3.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.