【问题标题】:Compare two strings is not working properly in javascript比较两个字符串在javascript中无法正常工作
【发布时间】:2016-04-20 20:04:51
【问题描述】:

这是我的 Javascript 函数,我在其中比较两个字符串,一个值作为函数参数接收,另一个从来自 Spring 响应的 json 中获取。

但我很惊讶我无法将两个字符串与===== 进行比较,我可以在调试器中看到值。

我正在通过我的 HTML 代码调用我的函数:

<textarea onblur="searchProduct(this.value)"></textarea >

Javascript:

function searchProduct(value)
{
    alert(value);
    for (i in allProducts) {
        console.log(allProducts[0].productName);
        var tempProductName=allProducts[i].productName;
            alert(tempProductName.toString() == value.toString());
        // checks product name is present or not
        if( tempProductName.toString() === value.toString()){
//          setting other values details of products
                    $('#description').val(allProducts[i].productDescription);
                    $('.cost').val(allProducts[i].unitPrice);
        }//if

        }
}//searchProduct

allProducts:春天的回应

[{"productId":3,"sku":"QTY","vendorProductId":"v1","productName":"P1name","productDescription":"p1 desc","supplierId":"s1 ","categoryId":"c","quantityPerUnit":1.0,"unitPrice":760.0,"msrp":1.0,"availableSize":40.0,"availableColors":"black,blue","size":40.0, "color":"white","discount":0.0,"unitWeight":1.0,"unitsInStock":148.0,"unitsOnOrder":500.0,"reorderLevel":150.0,"productAvailable":"Y","discountAvailable": "N","currentOrder":0.0,"pictureURL":"图片路径","ranking":10,"note":"Sample Notes","smsNotification":"N","productExpiryDate":null,"productDeleted ":null,"alertExpiryDate":null,"idsku":"IDSKU1"},{"productId":4,"sku":"QTY","vendorProductId":"v1","productName":"P2name", "productDescription":"p1 desc","supplierId":"s1","categoryId":"c","quantityPerUnit":1.0,"unitPrice":1.0,"msrp":1.0,"availableSize":40.0," availableColors":"black,blue","size":40.0,"color":"white","discount":0.0,"unitWeight":1.0,"unitsInStock":150.0,"unitsOnOrder":500.0,"reorderLevel" :150.0,"productAvailable":"Y","迪斯科untAvailable":"N","currentOrder":0.0,"pictureURL":"图片路径","ranking":10,"note":"Sample Notes","smsNotification":"N","productExpiryDate":null ,"productDeleted":null,"alertExpiryDate":null,"idsku":"IDSKU1"},{"productId":5,"sku":"QTY","vendorProductId":"v1","productName":" P3name","productDescription":"p1 desc","supplierId":"s1","categoryId":"c","quantityPerUnit":1.0,"unitPrice":1.0,"msrp":1.0,"availableSize": 40.0,"availableColors":"black,blue","size":40.0,"color":"white","discount":0.0,"unitWeight":1.0,"unitsInStock":1000.0,"unitsOnOrder":500.0, "reorderLevel":150.0,"productAvailable":"Y","discountAvailable":"N","currentOrder":0.0,"pictureURL":"图片路径","ranking":10,"note":"示例注释","smsNotification":"N","productExpiryDate":null,"productDeleted":null,"alertExpiryDate":null,"idsku":"IDSKU1"},{"productId":6,"sku":"QTY ","vendorProductId":"v1","productName":"P4name","productDescription":"p1 desc","supplierId":"s1","categoryId":"c","quantityPerUnit":1.0," unitPrice":1.0,"msrp":1.0 ,"availableSize":40.0,"availableColors":"black,blue","size":40.0,"color":"white","discount":0.0,"unitWeight":1.0,"unitsInStock":1000.0," unitsOnOrder":500.0,"reorderLevel":150.0,"productAvailable":"Y","discountAvailable":"N","currentOrder":0.0,"pictureURL":"图片路径","ranking":10,"note ":"Sample Notes","smsNotification":"N","productExpiryDate":null,"productDeleted":null,"alertExpiryDate":null,"idsku":"IDSKU1"},{"productId":7," sku":"QTY","vendorProductId":"v1","productName":"P5name","productDescription":"p1 desc","supplierId":"s1","categoryId":"c","quantityPerUnit ":1.0,"unitPrice":1.0,"msrp":1.0,"availableSize":40.0,"availableColors":"black,blue","size":40.0,"color":"white","discount": 0.0,"unitWeight":1.0,"unitsInStock":1000.0,"unitsOnOrder":500.0,"reorderLevel":150.0,"productAvailable":"Y","discountAvailable":"N","currentOrder":0.0,"pictureURL ":"图片路径","排名":10,"note":"示例注释","smsNotification":"N","productExpiryDate":null,"productDeleted":null,"alertExpiryDate":null ,"idsku":"IDSKU1"},{"productId":8,"sku":"QTY","vendorProductId":"v1","productName":"P6name","productDescription":"p1 desc", "supplierId":"s1","categoryId":"c","quantityPerUnit":1.0,"unitPrice":1.0,"msrp":1.0,"availableSize":40.0,"availableColors":"black,blue", "size":40.0,"color":"white","discount":0.0,"unitWeight":1.0,"unitsInStock":1000.0,"unitsOnOrder":500.0,"reorderLevel":150.0,"productAvailable":"Y ","discountAvailable":"N","currentOrder":0.0,"pictureURL":"图片路径","ranking":10,"note":"Sample Notes","smsNotification":"N","productExpiryDate ":null,"productDeleted":null,"alertExpiryDate":null,"idsku":"IDSKU1"},{"productId":9,"sku":"QTY","vendorProductId":"v1","productName ":"P7name","productDescription":"p1 desc","supplierId":"s1","categoryId":"c","quantityPerUnit":1.0,"unitPrice":1.0,"msrp":1.0," availableSize":40.0,"availableColors":"black,blue","size":40.0,"color":"white","discount":0.0,"unitWeight":1.0,"unitsInStock":1000.0,"unitsOnOrder" :500.0,"reorderLevel":150.0,"productAvaila ble":"Y","discountAvailable":"N","currentOrder":0.0,"pictureURL":"图片路径","ranking":10,"note":"Sample Notes","smsNotification":" N","productExpiryDate":null,"productDeleted":null,"alertExpiryDate":null,"idsku":"IDSKU1"},{"productId":10,"sku":"QTY","vendorProductId":" v1","productName":"P8name","productDescription":"p1 desc","supplierId":"s1","categoryId":"c","quantityPerUnit":1.0,"unitPrice":1.0,"msrp ":1.0,"availableSize":40.0,"availableColors":"black,blue","size":40.0,"color":"white","discount":0.0,"unitWeight":1.0,"unitsInStock": 1000.0,"unitsOnOrder":500.0,"reorderLevel":150.0,"productAvailable":"Y","discountAvailable":"N","currentOrder":0.0,"pictureURL":"图片路径","ranking":10 ,"note":"示例注释","smsNotification":"N","productExpiryDate":null,"productDeleted":null,"alertExpiryDate":null,"idsku":"IDSKU1"},{"productId": 11,"sku":"QTY","vendorProductId":"v1","productName":"P9name","productDescription":"p1 desc","supplierId":"s1","categoryId":"c" ,"quantityPerUnit":1.0,"unitPric e":1.0,"msrp":1.0,"availableSize":40.0,"availableColors":"black,blue","size":40.0,"color":"white","discount":0.0,"unitWeight" :1.0,"unitsInStock":1000.0,"unitsOnOrder":500.0,"reorderLevel":150.0,"productAvailable":"Y","discountAvailable":"N","currentOrder":0.0,"pictureURL":"图片路径","ranking":10,"note":"Sample Notes","smsNotification":"N","productExpiryDate":null,"productDeleted":null,"alertExpiryDate":null,"idsku":"IDSKU1" },{"productId":12,"sku":"QTY","vendorProductId":"v1","productName":"P9name","productDescription":"p1 desc","supplierId":"s1", "categoryId":"c","quantityPerUnit":1.0,"unitPrice":1.0,"msrp":1.0,"availableSize":40.0,"availableColors":"black,blue","size":40.0,"color ":"white","discount":0.0,"unitWeight":1.0,"unitsInStock":1000.0,"unitsOnOrder":500.0,"reorderLevel":150.0,"productAvailable":"Y","discountAvailable":"N ","currentOrder":0.0,"pictureURL":"图片路径","ranking":10,"note":"Sample Notes","smsNotification":"N","productExpiryDate":null,"productDeleted":空,“麦芽酒rtExpiryDate":null,"idsku":"IDSKU1"},{"productId":13,"sku":"QTY","vendorProductId":"v1","productName":"P9name","productDescription":" p1 desc","supplierId":"s1","categoryId":"c","quantityPerUnit":1.0,"unitPrice":1.0,"msrp":1.0,"availableSize":40.0,"availableColors":"black ,blue","size":40.0,"color":"white","discount":0.0,"unitWeight":1.0,"unitsInStock":1000.0,"unitsOnOrder":500.0,"reorderLevel":150.0,"productAvailable ":"Y","discountAvailable":"N","currentOrder":0.0,"pictureURL":"图片路径","ranking":10,"note":"示例备注","smsNotification":"N ","productExpiryDate":null,"productDeleted":null,"alertExpiryDate":null,"idsku":"IDSKU1"},{"productId":14,"sku":"QTY","vendorProductId":"v1 ","productName":"P9name","productDescription":"p1 desc","supplierId":"s1","categoryId":"c","quantityPerUnit":1.0,"unitPrice":1.0,"msrp" :1.0,"availableSize":40.0,"availableColors":"black,blue","size":40.0,"color":"white","discount":0.0,"unitWeight":1.0,"unitsInStock":1000.0 ,"unitsOnOrder":500.0,"reorderLevel": 150.0,"productAvailable":"Y","discountAvailable":"N","currentOrder":0.0,"pictureURL":"图片路径","ranking":10,"note":"Sample Notes","smsNotification ":"N","productExpiryDate":null,"productDeleted":null,"alertExpiryDate":null,"idsku":"IDSKU1"},{"productId":15,"sku":"QTY","vendorProductId ":"v1","productName":"P9name","productDescription":"p1 desc","supplierId":"s1","categoryId":"c","quantityPerUnit":1.0,"unitPrice":1.0 ,"msrp":1.0,"availableSize":40.0,"availableColors":"black,blue","size":40.0,"color":"white","discount":0.0,"unitWeight":1.0," unitsInStock":1000.0,"unitsOnOrder":500.0,"reorderLevel":150.0,"productAvailable":"Y","discountAvailable":"N","currentOrder":0.0,"pictureURL":"图片路径","排名":10,"note":"示例注释","smsNotification":"N","productExpiryDate":null,"productDeleted":null,"alertExpiryDate":null,"idsku":"IDSKU1"},{" productId":16,"sku":"QTY","vendorProductId":"v1","productName":"P10name","productDescription":"p1 desc","supplierId":"s1","categoryId": "c","数量P erUnit":1.0,"unitPrice":1.0,"msrp":1.0,"availableSize":40.0,"availableColors":"black,blue","size":40.0,"color":"white","discount" :0.0,"unitWeight":1.0,"unitsInStock":1000.0,"unitsOnOrder":500.0,"reorderLevel":150.0,"productAvailable":"Y","discountAvailable":"N","currentOrder":0.0," pictureURL":"图片路径","ranking":10,"note":"示例备注","smsNotification":"N","productExpiryDate":null,"productDeleted":null,"alertExpiryDate":null," idsku":"IDSKU1"}]

【问题讨论】:

  • 为什么不使用indexOf
  • @hindmost,我想比较一下,你能不能发表一下你的答案
  • 我已经在我的 js 控制台中以这种方式执行了你的代码:searchProduct("P1name");第一个结果是“真”。请您为您的问题写一个更好的描述吗?
  • 在我的情况下它总是返回 false。 :(
  • 更新我的问题

标签: javascript spring-mvc


【解决方案1】:

JS字符串比较是区分大小写的,你可能需要一个不区分大小写的,例如:

tempProductName.toUpperCase() === value.toUpperCase()

代替:

tempProductName.toString() === value.toString()

你不需要toString(),因为该字段已经是一个字符串。

【讨论】:

    【解决方案2】:

    查看您的代码,这应该可以工作。

    尝试更改迭代器 - for..in 用于迭代对象(即字典)。要遍历数组,请使用常规 forforEach

    function searchProduct(value) {
      allProducts
        .filter(function(product) {
          return product[productName] === value
        })
        .forEach(function(product) {
          $('#description').val(product.productDescription);
          $('.cost').val(product.unitPrice);
        });
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用indexOflength 实现自己的字符串比较方法:

      String.prototype.equals = function (str2) {
          return this.indexOf(str2) == 0 && this.length == str2.length;
      }
      

      或者更“PHP”风格的方法:

      function string_compare (str1, str2) {
         return str1.indexOf(str2) == 0 && str1.length == str2.length;
      }
      

      【讨论】:

      猜你喜欢
      • 2022-11-10
      • 1970-01-01
      • 2015-12-03
      • 2023-03-28
      • 2017-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多