VBScript中的多维数组过滤

我正在尝试使用VBScript过滤二维数组,但VBScript的内置“过滤器”功能仅适用于单维数组.我正在使用“rs.GetRows()”数组,那么有一个简单的函数可以使用二维数组吗?

编辑:这不是关于过滤数据库记录,而是关于过滤多维数组.我知道我可以在数据库级别过滤这些记录,但这不是我想要的.所以我正在寻找的是多维数组的过滤函数.

最佳答案

Option explicit

' actual function
Public function filter2dArray(a, text)
    Dim i
    For i = ubound(a) to lbound(a) step -1
        If instr(join(a(i), vbTab), text) = 0 Then
            ' no match. switch it with ubound and delete ubound
            a(i) = a(ubound(a))
            ReDim preserve a(ubound(a)-1)
        End If
    Next
    filter2dArray = a
End Function

' test code
Dim b, i
b = array(    array("row1", "monday", "work"), _ 
            array("row2", "tuesday", "work"), _
            array("row3", "wednesday", "free"))

b = filter2dArray(b, "work")

For i = lbound(b) to ubound(b)
    msgbox i & ": " & join(b(i), vbTab)
Next

根据您的要求:2D阵列的过滤功能.
限制:它仅适用于文本2d数组,并且没有Include和Compare开关,但这并不难实现.

点赞