Búsqueda de sitios web

Cómo eliminar elementos de matriz por índice en PowerShell


Recientemente, recibí el requisito de eliminar un elemento de matriz por índice en PowerShell. En este tutorial de PowerShell, explicaré diferentes formas de eliminar elementos de matriz por índice en PowerShell.

Para eliminar un elemento por índice en PowerShell, puede usar el método de división de matriz para crear una nueva matriz sin el elemento. Por ejemplo, $newArray=$array[0..($indexToRemove-1)] + $array[($indexToRemove+1)..($array.Length-1)] eliminará el elemento en $indexToRemove. Alternativamente, puede utilizar ArrayList y su método RemoveAt para un enfoque más directo: $arrayList.RemoveAt($indexToRemove). Ambos métodos eliminan efectivamente un elemento de una matriz en un índice específico.

Eliminar elemento de matriz por índice en PowerShell

Una matriz es una colección de elementos a los que se puede acceder mediante un índice numérico. En PowerShell, las matrices tienen un tamaño fijo, lo que significa que una vez que define una matriz, no puede aumentar ni disminuir su tamaño directamente.

Ahora, veamos diferentes métodos para eliminar elementos de una matriz por índice en PowerShell.

Método 1: crear una nueva matriz sin el elemento

Una forma de eliminar un elemento de una matriz mediante un índice es crear una nueva matriz que excluya el elemento en el índice especificado en PowerShell. He aquí un ejemplo:

# Original array
$array = 1, 2, 3, 4, 5

# Index to remove
$indexToRemove = 2

# Create a new array excluding the index
$newArray = $array[0..($indexToRemove-1)] + $array[($indexToRemove+1)..($array.Length-1)]

# Display the new array
$newArray

Este método utiliza la división de matrices para crear dos submatrices: una antes y otra después del índice que se va a eliminar. Luego se concatenan para formar la nueva matriz sin el elemento no deseado.

Puede ver el resultado en la siguiente captura de pantalla:

Método 2: usar ArrayList

Dado que una matriz de PowerShell estándar tiene un tamaño inmutable, si desea eliminar un elemento por índice directamente, puede usar una ArrayList de PowerShell. Una ArrayList es una matriz dinámica, lo que significa que puede crecer y reducirse según demanda. Aquí se explica cómo usarlo:

# Create an ArrayList
$arrayList = New-Object System.Collections.ArrayList
$arrayList.AddRange(@(1, 2, 3, 4, 5))

# Index to remove
$indexToRemove = 2

# Remove the element at the index
$arrayList.RemoveAt($indexToRemove)

# Display the ArrayList
$arrayList

El método RemoveAt se utiliza aquí para eliminar el elemento en el índice especificado directamente desde ArrayList.

Método 3: uso del cmdlet Where-Object

Otro método para eliminar un elemento por índice en PowerShell implica utilizar el cmdlet Where-Object. Este cmdlet le permite filtrar el elemento en el índice deseado:

# Original array
$array = 1, 2, 3, 4, 5

# Index to remove
$indexToRemove = 2

# Remove the element at the index using Where-Object
$newArray = $array | Where-Object { $_ -ne $array[$indexToRemove] }

# Display the new array
$newArray

Este método compara cada elemento ($_) en la matriz con el elemento en el índice a eliminar, filtrándolo efectivamente.

Después de ejecutar el código anterior usando el código VS, puede ver el resultado en la siguiente captura de pantalla:

Método 4: usar ForEach-Object con un condicional

Otra forma de eliminar un elemento de una matriz por índice en PowerShell es usar ForEach-Object con una declaración condicional. Aquí hay un ejemplo:

# Original array
$array = 1, 2, 3, 4, 5

# Index to remove
$indexToRemove = 2

# Initialize an empty array for the result
$newArray = @()

# Loop through the original array and exclude the index to remove
$array | ForEach-Object {
    if ($array.IndexOf($_) -ne $indexToRemove) {
        $newArray += $_
    }
}

# Display the new array
$newArray

Este método itera sobre cada elemento de la matriz original y lo agrega a una nueva matriz a menos que esté en el índice para eliminar.

Consulte la captura de pantalla a continuación como referencia:

Nota: Al eliminar elementos por índice, recuerde que si elimina un elemento del medio de una matriz, los índices de los elementos posteriores cambiarán. Esto puede resultar problemático si elimina elementos en un bucle. Planifique siempre en consecuencia para evitar resultados inesperados.

Conclusión

La eliminación de un elemento de una matriz por índice en PowerShell se puede lograr mediante varios métodos, como usar ArrayList, filtrar con Where-Object o iterar con ForEach- Objeto, etc.

En este tutorial de PowerShell, he explicado cómo eliminar elementos de matriz por índice en PowerShell utilizando varios métodos.

Artículos relacionados