返回false的等字符串比较

时间:2011-11-14 12:33:08

标签: javascript string compare

当在2个相等的字符串之间执行命令==时,我得到返回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,Entrada USB Frontal,Entrada SD Flip down 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 player automotivo ced229x - tela 3'',entrada usb frontal,   entrada sd翻转e controle remot ...,item = tv 46“led全高清   (1920 x 1080像素) - 46pfl7606d / 78 - 智能电视流光溢彩光谱2,   在线电视,c ...结果=假

     

str = dvd player automotivo ced229x - tela 3'',entrada usb frontal,   entrada sd flip down e controle remot ...,item =家庭影院c / dvd    - 250 w rms,hdmi,divx,usb - hts3510 / 78 - philips - philips - americanas.com.br result = false

     

str = dvd player automotivo ced229x - tela 3'',entrada usb frontal,   entrada sd翻转e controle remot ...,item = notebook hp result   = false

     

str = dvd player automotivo ced229x - tela 3'',entrada usb frontal,   entrada sd flip down e controle remot ...,item = tenis rebook result   = false

     

str = dvd player automotivo ced229x - tela 3'',entrada usb frontal,   entrada sd翻转e controle remot ...,item = dvd player   automotivo ced229x - tela 3'',entrada usb frontal,entrada sd flip   down e controle 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 :(得分:0)

出于某种原因,您的代码在单词“Down”之后生成一个不间断的空格(ascii 160或A0),因此%A0

为什么会发生这种情况我不知道,但这就是你需要解决的问题。

如果你无法弄清楚如何解决这个问题,那么你至少可以在比较之前用普通空格替换不间断的空格来处理症状,如下所示:

$.trim(str).replace(/\xa0/g,' ') == $.trim(Arr.prod[i].nameProd.replace(/\xa0/g,' '))