【问题标题】:VBScript Index Location of Array数组的VBScript索引位置
【发布时间】:2014-05-28 01:47:31
【问题描述】:

希望这是一个简单的,但我似乎找不到任何参考。

我如何打印存储在数组中的东西的位置,而不是其中的实际项目。

Array(0) = Dog
Array(1) = Cat
Array(2) = Fish

假设我搜索了数组并找到了猫,我如何打印存储猫的位置,在本例中为索引号 (1)。

提前致谢。

【问题讨论】:

    标签: arrays vbscript indexing location


    【解决方案1】:

    数组的位置被称为index

    如果你运行一个循环,

    For i = LBound(Array) to UBound(Array)
     if Array(i) = "Cat" then  '--restrict to find index of particular item
       MsgBox i '-- gives the location/index of Cat item
     End if
    next i
    
    • LBound :是下限,数组的起始索引。首先。它可以是零或任何值,因为 VBA 提供了将默认数组基数更改为 0 或 1 的灵活性。

    • UBound :是上界,数组的结束索引。最后一个。

    进一步阅读:LBound and Ubound conflicts in case of array which has been assigned by the Range.

    【讨论】:

    • 这不是存储在我所追求的索引位置的项目,它是实际的索引号本身。
    • 如果您想要该项目,它将由 Array(i) 返回,并且索引返回为 i ;)
    • 非常感谢,很明显我错过了你第一篇文章中的答案。
    • 请点击勾选标记接受答案:)。因此,社区知道您的问题已得到解决,并将帮助其他人面临与您类似的问题。
    • 对不起,我忘了它是 15 分钟跨度;)祝您好运,如果您需要进一步的帮助,请告诉我们。
    【解决方案2】:

    对于这种情况,最好使用ArrayList,而不是简单的数组。

    Set myArray = CreateObject ("System.Collections.ArrayList")
    With myArray
      .Add "Dog"
      .Add "Cat"
      .Add "Fish"
    End With
    
    intIndex = myArray.IndexOf ("Cat",0)
    

    此外,您不必关心边界。

    【讨论】:

    • 离题,缺少 .indexOf。
    • 添加了 .IndexOf - 谢谢。我仍然认为,它与主要问题有关。这是一种替代解决方案,可以轻松处理获取一维数组的任何元素的索引。
    • 好吧,如果他没有获取数组,那么将数组转换为字典对象,然后提取索引可能会更昂贵 - 无论如何这只是进行二进制遍历。一切都取决于来源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    相关资源
    最近更新 更多