Как сравнить строки
Есть массив внутри функции. В функцию передаются два параметра - один содержит строку, другой - число.
Далее идет поиск в массиве по строке. Запор вот здесь: lenCarCost[9][0] == car; (Индексы приведены в числа чтобы было яснее). Обе переменные, я проверял, содержат одну и ту же строку, пусть это будет "Носки". То есть консоль Хрома выводит "Носки" при вводе lenCarCost[9][0] и переменная car тоже выводит "Носки" при вводе в консоль. ПОЧЕМУ сравнение не проходит? Условие if ( "Носки" == "Носки") возвращает false. Что можно сделать для поиска в массиве нужной строки по символьному слову? Чтобы носки == носки вернуло наконец true? |
WTF???
var i = ("Носки" == "Носки"); alert(i);//true |
Forgotten, покажи полный тестовый пример...
|
Ладно, постараюсь описать тот кусок, который не работает. Я сделал даже свой пример, но он работает. А в данном вычислительном скрипте не работает.
Итак, есть переменная car, содержащая результат вычислений предыдущих функций. В данном случае она содержит текстовое наименование машины. И есть функция. Привожу все по порядку. Вот функция: Цитата:
Итак. Если я вместо параметра, передаваемого в функцию car (тот что в вызове) напишу просто какой-нибудь "Камаз10", текстом, то сравнение "lenCarCost[j][0] == car" вернет true когда строчка дойдет до Камаза в функции. Но стоит мне заменить ее на car, являющейся, повторюсь, результатом вычислений предыдущих функций и все-таки содержащая строчку "Камаз10" (именно эту строчку, они идентичны) - условие "lenCarCost[j][0] == car" не выполнится никогда. То есть "Камаз10" == "Камаз10" вернет false как и предыдущие и последующие сравнения. У меня совершенно нет идей почему такое происходит. В прочих тестовых примерах, что я писал, вводя в текстовое поле что-то, затем засовывая это в переменные, переменные в функцию и все срабатывало, похожие сравнения работали корректно. Что здесь может быть? Что мне сделать чтобы тут все заработало? |
["Камаз20"] - это массив с нулевым элементом "Камаз20".
Вам надо делать либо так: lenCarCost[j][0][0] == car, либо не заниматься глупостями и не плодить лишних массивов.) И естественно alert("Камаз20") и alert(["Камаз20"]) выводят одно и то же, т.к. второе приводится к строке: alert("Камаз20" == ["Камаз20"].toString()); |
Да, спасибо... уже разобрался... Массив с нулевым элементом? Кстати я вообще не понимаю как в памяти Ява Скрипта выглядят "многомерные" массивы. Похоже что не как настоящая матрица как в нормальных языках..
|
Цитата:
|
Часовой пояс GMT +3, время: 02:11. |