当在两个相等的字符串之间执行命令==时,我得到的返回值是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 Player Automotivo CED229X-Tela 3,Entrada USB正面,Entrada SD翻页e控制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遥控…,项目=电视46英寸led全高清
  (1920 x 1080像素)-46pfl7606d / 78-智能电视环境光光谱2,
  在线电视,电视...结果=否
  
  str = DVD Player automotivo ced229x-tela 3'',entrada usb frontal,
  entrada sd翻页e遥控器...,item =家庭影院c / dvd
  -250瓦rms,hdmi,divx,usb-hts3510 / 78-philips-philips-americanas.com.br结果=假
  
  str = DVD Player automotivo ced229x-tela 3'',entrada usb frontal,
  entrada sd翻页e遥控器...,item =笔记本hp结果
  =错误
  
  str = DVD Player automotivo ced229x-tela 3'',entrada usb frontal,
  entrada sd翻页e控件...,item = Tenis重新预订结果
  =错误
  
  str = DVD Player automotivo ced229x-tela 3'',entrada usb frontal,
  entrada sd翻页e遥控器...,item = DVD播放器
  汽车ced229x-tela 3英寸,entrada usb正面,entrada sd翻转
  关闭远程控制...结果=否


最后的比较应该是真的

看看这个

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个日志中的“ Down”一词:

在str中包含%20e%,在arr中包含%A0e%。

怎么了?

谢谢。

最佳答案

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

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

如果您不知道如何解决此问题,那么至少可以通过在比较之前将正常行替换为不间断空格来解决该症状,如下所示:

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

关于javascript - 相等的字符串比较返回false,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8121643/

10-09 18:03