从经典ASP中删除数组中的元素

ala*_*haw 6 vbscript asp-classic

给出以下数组作为示例...

arr(0)(0) = 3
arr(0)(1) = name
arr(0)(2) = address
arr(1)(0) = 7
arr(1)(1) = name
arr(1)(2) = address
arr(2)(0) = 14
arr(2)(1) = name
arr(2)(2) = address
Run Code Online (Sandbox Code Playgroud)

我需要从数组中删除中间元素(id = 7).我知道我需要遍历数组并将每个不被删除的记录移动到一个新数组中.我试过这个......

Dim newArr,i
Redim newArr(Ubound(arr))

For i = 0 to Ubound(arr)
    If (CStr(arr(i)(0)) <> 7 ) Then
        newArr(i) = arr(i)
    End if
Next
Run Code Online (Sandbox Code Playgroud)

调试时我可以看到if语句有效,所以我知道只复制了2个元素,但是newArr在结束时是空的.我错过了什么 我是一个PHP编码器,它是经典asp的新手,而且我常常使用数组函数来使这种东西变得不必要.任何帮助赞赏.谢谢.

Yur*_*ter 6

您可以Scripting.Dictionary试一试,而不是使用数组.

它更灵活,并且具有删除方法等.


Sha*_*ard 6

你不需要新的数组,只需重新分配项目并"裁剪"数组:

Const removalIndex = 1
For x=removalIndex To UBound(arr)-1
    arr(x) = arr(x + 1)
Next
ReDim Preserve arr(UBound(arr) - 1)
Run Code Online (Sandbox Code Playgroud)

此代码将从主数组中删除索引1处的数组项.如果您事先不知道要删除的项的索引,则可以通过数组上的简单循环轻松找到它.


Dai*_*Dai 5

我建议将Scripting.Dictionary其用作列表/集合,因为它允许插入和删除。请参见此处:VBScript 中的列表