1. 程式人生 > 其它 >javascript比較數字大小時,記得把比較物件轉為數字型別

javascript比較數字大小時,記得把比較物件轉為數字型別

前幾年,維護一個微商城的前端程式碼時,發現沒庫存的商品沒顯示售罄。

有問題的程式碼如下

程式碼中的item_stock_pos和item_pre表示什麼意思,我已忘記,只在我的開發日誌中保留有這段程式碼。

obj[i]["item_stock_pos"] = "1204";
obj[i]["item_pre"] = "15"

if (obj[i]["item_stock_pos"] > obj[i]["item_pre"]) {
// 本以為執行這裡
} else {
// 結果執行了這裡
}

問題原因分析:

在比較兩個操作物件的大小時,沒有確保操作物件都為數字,導致了if判斷沒有執行預期的程式碼。

解決方法:

在比較兩個操作物件的大小之前,先轉換為數字。

方法1:使用parseInt()把字串轉換為數字

obj[i]["item_stock_pos"] = "1204";
obj[i]["item_pre"] = "15";

obj[i]["item_stock_pos"] = parseInt(obj[i]["item_stock_pos"]);
obj[i]["item_pre"] = parseInt(obj[i]["item_pre"]);

if (obj[i]["item_stock_pos"] > obj[i]["item_pre"]) {
// ..
} else {
// ..
}

方法2:使用Number()把字串轉換為數字

obj[i]["item_stock_pos"] = "1204";
obj[i]["item_pre"] = "15";

obj[i]["item_stock_pos"] = Number(obj[i]["item_stock_pos"]);
obj[i]["item_pre"] = Number(obj[i]["item_pre"]);

if (obj[i]["item_stock_pos"] > obj[i]["item_pre"]) {
// ..
} else {
// ..
}