当在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%。
发生了什么事?
感谢。
答案 0 :(得分:0)
出于某种原因,您的代码在单词“Down”之后生成一个不间断的空格(ascii 160或A0),因此%A0
。
为什么会发生这种情况我不知道,但这就是你需要解决的问题。
如果你无法弄清楚如何解决这个问题,那么你至少可以在比较之前用普通空格替换不间断的空格来处理症状,如下所示:
$.trim(str).replace(/\xa0/g,' ') == $.trim(Arr.prod[i].nameProd.replace(/\xa0/g,' '))