Powershell Arraylist RemoveAt不起作用

问题描述

我正在使用Powershell Arraylist来保存通过分割字符串生成的列表。当我尝试使用以下代码删除列表中的第一项时,enitre列表将为空。

    // ... 

    authStateServiceMock = {
        get state() { return of(null) },get isLoggedIn() { return of(false) },};

    // ...

    spyOnProperty(authStateServiceMock,'state','get').and.callFake(() => of(stateMock));
    
    expect(component.menu).toEqual([
        ...something...
    ]);

如何删除Powershell中Arraylist索引0处的第一项

解决方法

RemoveAt不会返回值(请参见https://docs.microsoft.com/en-us/dotnet/api/system.collections.arraylist.removeat?view=netcore-3.1),因此不是

$teststringlist=$teststringlist.RemoveAt(0)

只需这样做:

$teststringlist.RemoveAt(0)
,

您可以使用Select-Object cmdlet和-Skip参数来完成此操作:

$teststringlist = $teststringlist | Select-Object -Skip 1

您也可以这样:

$teststringlist[1 .. ($a.teststringlist)]