Wie verwende ich grep
oder map
, um Elemente aus einem Array oder einem Verweis auf ein Array zu löschen? Ich habe Probleme mit splice
, um ein oder mehrere Elemente aus einem Verweis auf Array zu entfernen, und würde gerne sehen, ob grep
oder map
mir eine bessere Lösung anbieten können.
Sie sagen "array or reference array"
, als wären es zwei verschiedene Dinge. Das ist verwirrend.
Ich nehme an, dass Sie, nachdem Sie Ihr Array @removedElements
benannt haben, nach entfernen die Elemente aus @array
suchen und sie in @removedElements
einfügen.
Eine einfache Negation des Tests ergibt eine Liste. Sie können auch eine Schleife machen:
%Vor%Was den Vorteil hat, dass weniger Prüfungen durchgeführt werden.
Um splice
zu verwenden, müssen Sie die Indizes verfolgen, und ich bin mir nicht sicher, ob es sich in diesem Fall lohnt. Es würde Ihren Code sicherlich nicht leichter lesbar machen. Ebenso bezweifle ich map
wäre viel nützlicher als eine normale Schleife.
Verwenden Sie grep
, wenn Sie die Elemente kennen, die Sie behalten möchten.
Wenn Sie stattdessen einen Verweis auf ein Array haben, schreiben Sie
%Vor%Beachten Sie, dass dadurch das Array nicht verändert wird.
Der Prozess ist ähnlich mit map
. Bei einem Test, der Elemente zurückweist, schreibe
Kehre den Sinn des Tests mit
um %Vor% Vielleicht gefällt Ihnen auch die Funktion extract_by
von List::UtilsBy
. Es ähnelt grep, außer dass es die Elemente aus dem übergebenen Array entfernt.
Tags und Links perl