Сравнение равных строк, возвращающее false - PullRequest
1 голос
/ 14 ноября 2011

При выполнении команды == между двумя равными строками я получаю возвращаемое значение false.

Следующий код:

где-то в коде:

Arr.prod.push({
                 "id" : product.id,
                 "nameProd" : product.name
    });

В другом локальном коде:

var id;
for(i in Arr.prod){
   if( $.trim(str) == $.trim(Arr.prod[i].nameProd)){
        id = Arr.prod[i].id;
    break;
    }
}

, когда i = 3, значение Array.prod[i].nameProd равно значению str.Эти переменные имеют следующие значения: «DVD-плеер Automotivo CED229X - Tela 3, USB-интерфейс Entrada, откидная крышка Entrada SD e Controle Remoto - Philips - Philips - Americ ...».Но сравнение всегда возвращает false.

Что не так?

РЕДАКТИРОВАТЬ

добавление кода для итерации:

console.log( 'str = ' + $.trim(str).toLowerCase(), ', item = ' + 
$.trim(Arr.prod[i].nameProd).toLowerCase(), 'result = ' + 
($.trim(str).toLowerCase() == $.trim(Arr.prod[i].nameProd).toLowerCase()));

РЕЗУЛЬТАТ

str = DVD-проигрыватель automotivo ced229x - tela 3 '', вход USB фронтальный, вход Entrada SD опрокидывается и управляется удаленно ..., item = tv 46 "ledfull hd (1920 x 1080 пикселей) - 46pfl7606d / 78 - интеллектуальное телевидение ambilight spectra 2, онлайн-телевидение, c ... result = false

str = DVD-плеер automotivo ced229x - tela 3 '', entrada usb frontal, entrada sd переворачивается и управляется удаленно ..., item = домашний кинотеатр c / dvd - 250 w rms, hdmi, divx, usb - hts3510 / 78 - philips - philips - americanas.com.br результат = false

str = DVD-плеер, автомобильный ced229x - tela 3 '', entrada USB фронтальный, entrada sd, переверните электронное управление remot ..., item = ноутбук hp result = false

str = DVD-плеер автомобильный ced229x - tela3 '', entrada USB фронтальный, entrada sd перевернуть e control control remot ..., item = tenis rebook result = false

str = dvd-плеер automotivo ced229x - tela 3 '', entrada usb frontal, entrada sd опускается и контролирует remot ..., item = dvd player autovtivo ced229x - tela 3 '', entrada usb frontal,entrada sd перевернуть e controlrol remot ... result = false

Последнее сравнение должно быть верным

посмотрите это

console.log('str : ' + escape(str));
console.log('arr : ' + escape(Arr.prod[i].nameProd)));

РЕЗУЛЬТАТ:

str : DVD%20Player%20Automotivo%20CED229X%20-%20Tela%203%27%27%2C%20Entrada%20USB%20Frontal%2C%20Entrada%20SD%20Flip%20Down%20e%20Controle%20Remot%20...

arr : DVD%20Player%20Automotivo%20CED229X%20-%20Tela%203%27%27%2C%20Entrada%20USB%20Frontal%2C%20Entrada%20SD%20Flip%20Down%A0e%20Controle%20Remot%20...

присмотреть слово «вниз» в 2 логах:

В str содержит% 20e%, так как в arr содержит% A0e%.

Чтопроисходит?

Спасибо.

1 Ответ

0 голосов
/ 14 ноября 2011

По какой-то причине ваш код генерирует неразрывный пробел (ascii 160 или A0) после слова "Down", то есть %A0.

Почему это происходит, я понятия не имею, но это то, что вам нужно исправить.

Если вы не можете понять, как решить эту проблему, то вы можете хотя бы лечить симптом, заменяя неразрывные пробелы нормальными пробелами перед сравнением, например:

$.trim(str).replace(/\xa0/g,' ') == $.trim(Arr.prod[i].nameProd.replace(/\xa0/g,' '))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...