Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.09.2012, 16:20
Интересующийся
Отправить личное сообщение для Forgotten Посмотреть профиль Найти все сообщения от Forgotten
 
Регистрация: 19.08.2012
Сообщений: 15

Как сравнить строки
Есть массив внутри функции. В функцию передаются два параметра - один содержит строку, другой - число.

Далее идет поиск в массиве по строке. Запор вот здесь:

lenCarCost[9][0] == car;

(Индексы приведены в числа чтобы было яснее). Обе переменные, я проверял, содержат одну и ту же строку, пусть это будет "Носки". То есть консоль Хрома выводит "Носки" при вводе lenCarCost[9][0] и переменная car тоже выводит "Носки" при вводе в консоль. ПОЧЕМУ сравнение не проходит? Условие if ( "Носки" == "Носки") возвращает false. Что можно сделать для поиска в массиве нужной строки по символьному слову? Чтобы носки == носки вернуло наконец true?
Ответить с цитированием
  #2 (permalink)  
Старый 04.09.2012, 16:24
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

WTF???
var i = ("Носки" == "Носки");
alert(i);//true
Ответить с цитированием
  #3 (permalink)  
Старый 04.09.2012, 16:26
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Forgotten, покажи полный тестовый пример...
Ответить с цитированием
  #4 (permalink)  
Старый 04.09.2012, 22:18
Интересующийся
Отправить личное сообщение для Forgotten Посмотреть профиль Найти все сообщения от Forgotten
 
Регистрация: 19.08.2012
Сообщений: 15

Ладно, постараюсь описать тот кусок, который не работает. Я сделал даже свой пример, но он работает. А в данном вычислительном скрипте не работает.

Итак, есть переменная car, содержащая результат вычислений предыдущих функций. В данном случае она содержит текстовое наименование машины. И есть функция. Привожу все по порядку.

Вот функция:

Цитата:

function f_lenObl(car, pointSelected) {

if (pointSelected == 0)
return 0;

var lenCarCost = [ [ ["ВАЗ"], [740] ],
[ ["Газель1"], [890] ],
[ ["Газель2"], [1090] ],
[ ["Газель3"], [1240] ],
[ ["Газель4"], [1540] ],
[ ["Газель5"], [1740] ],
[ ["Газель6"], [1940] ],
[ ["ЗИЛ"], [3900] ],
[ ["Камаз10"], [6460] ],
[ ["Камаз20"], [8600] ] ];

var j;

for (j = 0; j < 10; j++) {

if (lenCarCost[j][0] == car) {
alert('Сработало!');
return (lenCarCost[j][pointSelected]);
}
}
}
А вызов ее идет вот так: f_lenObl(car, 1);

Итак. Если я вместо параметра, передаваемого в функцию car (тот что в вызове) напишу просто какой-нибудь "Камаз10", текстом, то сравнение "lenCarCost[j][0] == car" вернет true когда строчка дойдет до Камаза в функции. Но стоит мне заменить ее на car, являющейся, повторюсь, результатом вычислений предыдущих функций и все-таки содержащая строчку "Камаз10" (именно эту строчку, они идентичны) - условие "lenCarCost[j][0] == car" не выполнится никогда. То есть "Камаз10" == "Камаз10" вернет false как и предыдущие и последующие сравнения.

У меня совершенно нет идей почему такое происходит. В прочих тестовых примерах, что я писал, вводя в текстовое поле что-то, затем засовывая это в переменные, переменные в функцию и все срабатывало, похожие сравнения работали корректно.

Что здесь может быть? Что мне сделать чтобы тут все заработало?
Ответить с цитированием
  #5 (permalink)  
Старый 04.09.2012, 22:26
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,586

["Камаз20"] - это массив с нулевым элементом "Камаз20".
Вам надо делать либо так: lenCarCost[j][0][0] == car, либо не заниматься глупостями и не плодить лишних массивов.)

И естественно alert("Камаз20") и alert(["Камаз20"]) выводят одно и то же, т.к. второе приводится к строке:
alert("Камаз20" == ["Камаз20"].toString());
__________________
29375, 35

Последний раз редактировалось Aetae, 04.09.2012 в 22:31.
Ответить с цитированием
  #6 (permalink)  
Старый 04.09.2012, 23:03
Интересующийся
Отправить личное сообщение для Forgotten Посмотреть профиль Найти все сообщения от Forgotten
 
Регистрация: 19.08.2012
Сообщений: 15

Да, спасибо... уже разобрался... Массив с нулевым элементом? Кстати я вообще не понимаю как в памяти Ява Скрипта выглядят "многомерные" массивы. Похоже что не как настоящая матрица как в нормальных языках..
Ответить с цитированием
  #7 (permalink)  
Старый 05.09.2012, 00:13
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

Сообщение от Forgotten
Да, спасибо... уже разобрался... Массив с нулевым элементом? Кстати я вообще не понимаю как в памяти Ява Скрипта выглядят "многомерные" массивы. Похоже что не как настоящая матрица как в нормальных языках..
Как массив массивов. А двумерные etc массивы в js отсутствуют, это да, да и разумно это.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
скрипт бегущей строки - как сделать строку непрерывной dansury Элементы интерфейса 9 26.01.2013 04:54
Как из строки содержащей namespace получить ссылку на объект? wwwboy Общие вопросы Javascript 2 07.12.2011 09:22
Как сделать загрузку Store в поле Grid в зависимости от id строки? Сергей З ExtJS 5 02.12.2011 19:01
Как организовать RichEdit arma Элементы интерфейса 2 18.02.2010 14:57