2016-04-20 6 views
0

Вот моя функция Javascript, в которой я сравниваю две строки, одно значение принимает как параметр функции, а другой извлекает из json, который поступает из ответа Spring.Сравнение двух строк не работает должным образом в javascript

Но я очень удивлен. Я не могу сравнить две строки с === и ==, я могу видеть значения в отладчике.

Я caling свою функцию из моего 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": "с", "quantityPerUnit": 1,0, "UnitPrice": 760,0, "MSRP": 1,0, "availableSize": 40,0, "availableColors": "черный, синий", "размер": 40.0, "цвет": "белый", "скидка": 0.0, "unitWeight": 1,0, "UnitsInStock": 148,0, "UnitsOnOrder": 500,0, "ReorderLevel": 150,0, "productAvailable": "Y", "discountAvailable ":" N "," currentOrder ": 0.0," pictureURL ":" Picture path "," rank ": 10," note ":" Sample Notes "," smsNotification ":" N "," productExpiryDate ": null, "productDeleted": NULL, "alertExpiryDate": NULL, "idsku": "IDSKU1"}, { "ProductID": 4, "Код": "ВО", "vendorProductId": "v1", "ProductName": "P2name »,« productDescription »:« p1 desc »,« supplierId »:« s1 »,« categoryId »:« c »,« quantityPerUnit »: 1.0,« unitPrice »: 1.0, msrp: 1.0,« availableSize »: 40.0 , "availableColors": "черный, синий", "размер": 40,0, "цвет": "белый", "скидка": 0.0, "unitWeight": 1,0, "UnitsInStock": 150,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": 5, "Код": "ВО", "vendorProductId": "v1" , "productName": "P3name", "productDescription": "p1 desc", "supplierId": "s1", "categoryId": "c", "quantityPerUnit": 1.0, "unitPrice": 1.0, msrp: 1,0, "availableSize": 40,0, "availableColors": "черный, синий", "размер": 40,0, "цвет": "белый", "скидка": 0.0, "unitWeight": 1,0, "UnitsInStock": 1000.0, «unitsOnOrder»: 500.0, «reorderLevel»: 150.0, «productAvailable»: «Y», «discountAvailable»: «N», «currentOrder»: 0.0, «pictureURL»: «Путь изображения», «рейтинг»: 10, примечание ":" Примеры заметок "," 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 ":" черный, синий», "размер": 40,0, "цвет": "белый", "скидка" : 0.0, "unitWeight": 1.0, "unitsIn Stock »: 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 ": 7," sku ":" QTY "," vendorProductId ":" v1 "," productName ":" P5name "," productDescription ":" p1 desc "," supplierId ":" s1 "," categoryId ": "с", "quantityPerUnit": 1,0, "UnitPrice": 1,0 "MSRP": 1,0, "availableSize": 40,0, "availableColors": "черный, синий", "размер": 40,0, "цвет": "белый " "скидка": 0.0, "unitWeight": 1,0, "UnitsInStock": 1000,0, "UnitsOnOrder": 500,0, "ReorderLevel": 150,0, "productAvailable": "Y", "discountAvailable": "N"," currentOrder ": 0.0," pictureURL ":" Picture path "," rank ": 10," note ":" Sample Notes "," smsNotification ":" N "," productExpiryDate ": null," productDeleted ": null," alertExpiryDate ": NULL," idsku ":" IDSKU1 "}, {" ProductID ": 8," Код ":" ВО " "vendorProductId": "v1", "ProductName": "P6name", "ProductDescription":" p1 по убыванию " "SupplierID": "S1", "CategoryId": "C", "quantityPerUnit": 1.0, "UnitPrice": 1,0 "MSRP": 1,0, "availableSize": 40,0, "availableColors":" черный, синий », "размер": 40,0, "цвет": "белый", "скидка": 0.0, "unitWeight": 1,0, "UnitsInStock": 1000,0, "UnitsOnOrder": 500,0, "ReorderLevel": 150,0, "productAvailable": "Y", "discountAvailable": "N", "currentOrder": 0.0, «pictureURL»: «Picture path», «rank»: 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": "черный, синий" , "размер": 40,0, "цвет": "белый", "скидка": 0.0, "unitWeight": 1,0, "UnitsInStock": 1000,0, "UnitsOnOrder": 500,0, "ReorderLevel": 150,0, "productAvailable":» Y »,« discountAvailable »:« N »,« currentOrder »: 0.0,« pictureURL »:« Путь изображения »,« рейтинг »: 10,« примечание »:« Примеры заметок »,« smsNotification »:« N », productExpiryDate ": NULL," productDeleted ": NULL," alertExpiryDate ": NULL," idsku ":" IDSKU1 "}, {" ProductID ": 10," Код ":" ВО " "vendorProductId": "v1"," productName ":" P8name "," productDescription ":" p1 desc "," supplierId ":" s1 "," categoryId ":" c "," quantityPerUnit ": 1.0," unitPrice ": 1.0, msrp: 1.0, "availableSize": 40,0, "availableCo Lors ":" черный, синий», "размер": 40,0, "цвет": "белый", "скидка": 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": 11, "Код": "ВО"," vendorProductId ":" v1 "," productName ":" P9name "," productDescription ":" p1 desc "," supplierId ":" s1 "," categoryId ":" c "," quantityPerUnit ": 1.0," unitPrice ": 1.0 "MSRP": 1,0, "availableSize": 40,0, "availableColors": "черный, синий", "размер": 40,0, "цвет": "белый", "скидка": 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": 1 2, «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": "черный, синий", "размер": 40,0, "цвет": "белый",» скидка ": 0.0," unitWeight ": 1,0," UnitsInStock ": 1000,0," UnitsOnOrder ": 500,0," ReorderLevel ": 150,0," productAvailable ":" Y», "discountAvailable": "N", "currentOrder": 0.0 , "pictureURL": "Picture path", "rank": 10, "note": "Sample Notes", "smsNotification": "N", "productExpiryDate": null, "productDeleted": null, "alertExpiryDate": null , «idsku»: «IDSKU1»}, {«productId»: 13, «sku»: «QTY», «vendorProductId»: «v1», «productName»: «P9name», «productDescription»: «p1 desc», "SupplierID": "S1", "CategoryId": "с", "quantityPerUnit": 1,0, "UnitPrice": 1,0 "MSRP": 1,0, "availableSize": 40,0, "availableColors": "черный, синий", "размер": 40,0, "цвет": "белый", "скидка": 0.0, "unitWeight": 1,0, "UnitsInStock": 1000,0, "UnitsOnOrder": 500,0, "ReorderLevel": 150,0, "productAvailable": "У " "discountAvailable":" N »,« currentOrder »: 0.0,« pictureURL »:« Picture path »,« rank »: 10,« note »:« Sample Notes »,« smsNotification »:« N »,« productExpiryDate »: null,« productDeleted »: нуль "alertExpiryDate": NULL, "idsku": "IDSKU1"}, { "ProductID": 14, "Код": "ВО", "vendorProductId": "v1", "ProductName": "P9name", "ProductDescription ":" p1 desc "," supplierId ":" s1 "," categoryId ":" c "," quantityPerUnit ": 1.0," unitPrice ": 1.0, msrp: 1.0," availableSize ": 40.0," availableColors " : "черный, синий", "размер": 40,0, "цвет": "белый", "скидка": 0.0, "unitWeight": 1,0, "UnitsInStock": 1000,0, "UnitsOnOrder": 500,0, "ReorderLevel": 150,0 , «productAvailable»: «Y», «discountAvailable»: «N», «currentOrder»: 0.0, «pictureURL»: «Путь изображения», «рейтинг»: 10, «примечание»: «Примеры заметок», «smsNotification», : "N", "productExpiryDate": NULL, "productDeleted": NULL, "alertExpiryDate": NULL, "idsku": "IDSKU1"}, { "ProductID": 15, "Код": "ВО", "vendorProductId" : «v1», «productName»: «P9name», «productDescription»: «p1 desc», «supplierId»: «s1», «categoryId»: «c», «quantityPerUnit»: 1.0, «unitPrice»: 1.0, "MSRP": 1,0, "availableSiz е ": 40,0," availableColors ":" черный, синий», "размер": 40,0, "цвет": "белый", "скидка": 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», «quantityPerUnit»: 1,0, "UnitPrice": 1,0 "MSRP": 1,0, "availableSize": 40,0, "availableColors": "черный, синий", "размер": 40,0, "цвет": "белый", "скидка": 0.0, "unitWeight": 1,0, "UnitsInStock": 1000,0, "UnitsOnOrder": 500,0, "ReorderLevel": 150,0, "productAvailable": "Y", "discountAvailable": "N", "currentOrder": 0.0, «pictureURL»: «Picture path», «rank»: 10, «note»: «Sample Notes», «smsNotification»: «N», «productExpiryDate»: null, «productDeleted»: null, «alertExpiryDate»: нуль "idsku": "IDSKU1"}]

+0

Почему бы не использовать [ 'indexOf'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/ Ссылка/Global_Objects/String/IndexOf)? – hindmost

+0

@hindmost, я хочу сравнить его, не могли бы вы разместить свой ответ? –

+0

Я выполнил ваш код в консоли js следующим образом: searchProduct («P1name»); Первый результат был «правдой». Можете ли вы написать лучшее описание своей проблемы? – Nico

ответ

2

JS string сравнение чувствительно к регистру, и вам, вероятно, понадобится c аза нечувствительны один, например:

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

вместо:

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

Вам не нужно toString() в любом случае, потому что поле уже строка.

+0

его рабочие благодарности. + 1 upvote –

1

Вы можете реализовать свой собственный струнный метод сравнения с indexOf и length:

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; 
} 
+0

спасибо. + 1 upvote –

+0

Не расширяйте прототип, как в первом примере - это очень и очень плохая практика. Вместо этого сделайте отдельную функцию, например, второй пример! – bcherny

+0

@bcherny Можете ли вы объяснить, почему это Плохая практика? –

2

Глядя на ваш код, это должно работать.

Попробуйте изменить итератор - for..in предназначен для итерации объектов (т. Е. Словарей). Чтобы перебрать массив, использовать либо обычный for или forEach:

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

спасибо. + 1 upvote –

Смежные вопросы