PS: Erhalte den Index in einer Array-Liste

8

Ich habe ein Array von Strings. Nicht sicher, ob es einen einfachen Weg gibt, den Index eines zuerst gefundenen Elements im Array zu finden?

%Vor%

Ich könnte es in einer Schleife machen. nicht sicher, ob es einen alternativen Weg gibt?

    
David.Chu.ca 22.12.2009, 18:00
quelle

3 Antworten

11

Verwenden Sie eine for-Schleife (oder eine foreach-Schleife, die über den Array-Index iteriert ... gleiche Differenz). Ich kenne keine Systemvariable, die den aktuellen Array-Index innerhalb einer foreach-Schleife enthält, und ich glaube nicht, dass eine existiert.

%Vor%     
Peter Seale 22.12.2009, 18:05
quelle
24

Wenn Sie wissen, dass der Wert nur einmal im Array auftritt, ist die Methode [array] :: IndexOf () ein guter Weg:

%Vor%

Abgesehen davon, dass die Anordnung sehr groß ist, ist die Leistung dieses Ansatzes ein wenig besser als die Verwendung eines PowerShell-Cmdlets wie Where-Object. Dennoch wird nur das erste Vorkommen des angegebenen Elements gefunden. Aber Sie können die andere Überladung von IndexOf verwenden, um das nächste Vorkommen zu finden:

%Vor%

$ ndx wird -1, wenn das Element nicht gefunden wird.

    
Keith Hill 23.12.2009 02:16
quelle
2

Die Verwendung von Where-Object ist wahrscheinlich eher langsam, weil es die Pipeline für eine einfache Operation betrifft.

Der schnellste / einfachste Weg, dies zu tun (in PowerShell V2), besteht darin, dem Ergebnis eines for

eine Variable zuzuweisen %Vor%     
Start-Automating 22.12.2009 20:55
quelle

Tags und Links