asp数组嵌套方法并循环打印

ASP   2025-02-28 14:49   61   0  

在ASP中,普通数组无法直接实现键值对操作,但可以通过结构重组模拟类似效果。以下是使用数组模拟字典结构的实现方法:

<%
' 初始化results主数组 
Dim results()
ReDim results(-1) ' 初始为空数组 
 
' 创建父节点结构(用数组模拟字典)
Dim parentDict(1)
parentDict(0) = "children"          ' 键名
parentDict(1) = Array()             ' 值初始化为空数组 
 
' 创建子节点结构(用数组模拟字典)
Dim childDict(2)
childDict(0) = "key1" 
childDict(1) = "value1"
childDict(2) = "otherData"
 
' 将子节点添加到父节点的children集合 
Dim tempChildren 
tempChildren = parentDict(1) ' 获取当前children数组 
ReDim Preserve tempChildren(UBound(tempChildren) + 1)
tempChildren(UBound(tempChildren)) = Array(1, childDict) ' 存储键值对
parentDict(1) = tempChildren ' 回写修改后的children数组 
 
' 将父节点添加到主results数组 
ReDim Preserve results(UBound(results) + 1)
results(UBound(results)) = Array(1, parentDict) ' 存储键值对
 
' 示例访问方式:
For Each item In results 
    If item(0) = 1 Then ' 通过键值查找 
        parentNode = item(1)
        Response.Write "Parent Node Children Count: " & UBound(parentNode(1)) + 1 
    End If 
Next 
%>

代码说明:

  1. 数据结构设计:

  • 使用Array(key, value)格式存储键值对

  • 多维数组存储复合结构(如parentDict包含多个属性)

核心操作:

' 添加元素操作模板 
tempArray = originalArray 
ReDim Preserve tempArray(UBound(tempArray) + 1)
tempArray(UBound(tempArray)) = NewElement 
originalArray = tempArray

优势与妥协:

  • ✅ 纯数组实现,无需Scripting.Dictionary

  • ❗ 查找需遍历数组(建议维护索引字典提升性能)

  • ❗ 代码复杂度高于字典实现


封装类:

<%
' 带索引缓存的优化版本 
Class ArrayDictionary 
    Private dataArray 
    Private indexMap 
 
    Private Sub Class_Initialize()
        ReDim dataArray(-1)
        Set indexMap = Server.CreateObject("Scripting.Dictionary")
    End Sub 
 
    Public Sub Add(key, value)
        If Not indexMap.Exists(key) Then 
            ReDim Preserve dataArray(UBound(dataArray) + 1)
            dataArray(UBound(dataArray)) = value 
            indexMap.Add key, UBound(dataArray)
        End If 
    End Sub 
 
    Public Property Get Item(key)
        If indexMap.Exists(key) Then 
            Item = dataArray(indexMap(key))
        End If 
    End Property 
End Class 
 
' 使用示例:
Set results = New ArrayDictionary 
Set parentDict = New ArrayDictionary 
Set childDict = New ArrayDictionary 
 
parentDict.Add "children", New ArrayDictionary 
parentDict("children").Add 1, childDict 
results.Add 1, parentDict 
%>


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。