Почему не работает .indexOf()?

Привет всем!

Столкнулся со следующей проблемой.
Имею массив строк и провожу с ними следующие операции, пример:
$arr = @("sometext", "value1","somethingelse")
$temp = $arr -imatch "val"

в переменную $temp попадает, как я и хочу, значение value1. После этого пытаюсь найти этот элемент в массиве и узнать его индекс. Вот тут как раз и проблема, следующие команды выдают мне "-1" (что значит элемент не найден)
$arr.indexOf($temp)
[array]::IndexOf($arr, $temp)

При этом обе предыдущие команды отрабатывают, если туда руками вписать Value1 (ну или что то другое)

Коллеги, подскажите, что я делаю не так? Спасибо!
  • Вопрос задан
  • 340 просмотров
Решения вопроса 1
@Puchao
Комментарии
Этот метод выполняет поиск всех элементов одномерного arrayfor value. Чтобы определить ли value существует в array, метод выполняет сравнения на равенство, вызвав каждый элемент Equals метод, пока не найдет совпадение. Это означает, что если элемент переопределяет Object.Equals(Object) вызывается метод, что переопределение.

PS > $arr[1].Equals($temp)
False
PS > $arr[1].Equals("$temp")
True

Поэтому:
PS > $arr.indexOf("$temp")
1
PS > [array]::IndexOf($arr, "$temp")
1
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы