Расположение массива в индексе VBScript

Надеюсь, это простой, но я не могу найти на него ссылки.

Как напечатать местоположение чего-либо, хранящегося в массиве, а не самого элемента, который в нем находится.

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

Допустим, я просмотрел массив и нашел кошку, как мне распечатать местоположение, в котором хранилась кошка, в данном случае номер индекса (1).

Заранее спасибо.


person Community    schedule 08.01.2013    source источник


Ответы (2)


Расположение массива называется 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 и Ubound в случае массива, назначенного Range.

person bonCodigo    schedule 08.01.2013
comment
Это не элемент, который был сохранен в позиции индекса, после которой я нахожусь, это сам фактический номер индекса. - person ; 08.01.2013
comment
ЕСЛИ ВЫ ХОТИТЕ этот элемент, он будет возвращен Array(i), а индекс будет возвращен как i;) - person bonCodigo; 08.01.2013
comment
Отличное спасибо, это было настолько очевидно, что я пропустил ответ в вашем первом посте. - person ; 08.01.2013
comment
Примите ответ, также нажав на галочку :). Таким образом, сообщество знает, что ваш вопрос решен, и поможет другому столкнуться с аналогичными проблемами, такими как ваша. - person bonCodigo; 08.01.2013
comment
Извините, я забыл, что это 15 минут;) Удачи, дайте нам знать, если вам потребуется дополнительная помощь. - person bonCodigo; 08.01.2013

Для таких случаев лучше использовать ArrayList, чем простой массив .

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

intIndex = myArray.IndexOf ("Cat",0)

Кроме того, вам не нужно заботиться о границах.

person user3678915    schedule 27.05.2014
comment
Не по теме и отсутствует .indexOf. - person Ekkehard.Horner; 27.05.2014
comment
Добавлен .IndexOf - спасибо. Я все же думаю, что это связано с главным вопросом. Это альтернативное решение, позволяющее легко получить индекс любого элемента одномерного массива. - person user3678915; 27.05.2014
comment
Что ж, если он не получает массив, может быть дороже коммутировать массив в объект словаря, а затем извлекать индекс, который в любом случае просто выполняет двоичный обход. Все зависит от источника. - person ChrisH; 19.05.2017