为什么手机拒绝读取 Math.max 值?
Why Do Mobile Phones refuse to read Math.max values?
长话短说,我一直在为一个客户开发全栈网站,我已经完成了所有工作,但是我遇到了一个问题!
出于某种原因,当我使用 Math.max(...shipArray)
时,它可以在 PC 上正常运行,但当您尝试在移动设备上查看时。它 returns NaN,这也会影响 shoppingTotal
!
无论如何,这是我的代码:
const shippingCost = () => {
const basket = JSON.parse(window.localStorage.getItem("productData"));
const shipArray = [];
let shippingTotal = 0;
if(!basket)
setBasketEmpty(true);
basket.map((item, key) => {
shipArray.push(item.product.shipping_cost);
});
console.log(shipArray)
shippingTotal = shippingTotal + Math.max(...shipArray);
updateShoppingTotal(shippingTotal);
}
const updateShoppingTotal = (shipping) => {
var tempCost = 0;
var finalCost = 0;
var tempCostArray = [];
var quantity = window.localStorage.getItem("productData");
if(!storageData)
setBasketEmpty(false);
if(quantity){
JSON.parse(quantity).map(quan => {
tempCost = quan.product.product_price * quan.quantity;
tempCostArray.push(tempCost);
});
tempCostArray.forEach(item => {
if(!isNaN(item)){
finalCost = finalCost + item + shipping;
}
});
setShipping(shipping);
window.localStorage.setItem("originalPrice", parseFloat(finalCost).toFixed(2));
window.localStorage.setItem("basketTotal", parseFloat(finalCost).toFixed(2))
setShoppingTotal(parseFloat(finalCost).toFixed(2))
}
}
我也在使用 ReactJS,而不是 React-Native。
谢谢
编辑:为了安全起见,我尝试手动输入一些随机数,但似乎 shipArray
确实是问题所在,所以如果有人知道为什么要添加一个数组中的非数字将很有帮助!
可能是散布操作...
如果您在旧手机上进行测试(尤其是那些便宜的“燃烧器”TracFones),那么它们没有很多现代 JS 功能(很确定没有传播,没有箭头功能,甚至可能没有让?)。
我曾经为那些和许多你不能使用的现代 JS 东西开发。它们通常是 运行 Android 4.4 或更早版本。
一个很好的资源是 can I use(link 传播)。您会注意到 Android 4.4
不支持
编辑: 如果这段代码由 Babel 转译,它可能会用更老派的东西替换这种东西。
如果我有大脑我会很危险!哈哈
所以为了查看产品,我有 2 个组件,一个用于较大的设备,一个用于移动设备。
对于第一个组件,我将运费添加到 localStorage 但我没有为移动组件这样做,所以当我尝试在移动设备上阅读 item.product.shipping_cost
时,它当然不能发现它是这样说 undefined
.
这里的血腥台词:
oldBasket.push({product: {shipping_cost:this.state.productData.shipping_cost,});
该行不在移动组件上!
感谢大家的指教
长话短说,我一直在为一个客户开发全栈网站,我已经完成了所有工作,但是我遇到了一个问题!
出于某种原因,当我使用 Math.max(...shipArray)
时,它可以在 PC 上正常运行,但当您尝试在移动设备上查看时。它 returns NaN,这也会影响 shoppingTotal
!
无论如何,这是我的代码:
const shippingCost = () => {
const basket = JSON.parse(window.localStorage.getItem("productData"));
const shipArray = [];
let shippingTotal = 0;
if(!basket)
setBasketEmpty(true);
basket.map((item, key) => {
shipArray.push(item.product.shipping_cost);
});
console.log(shipArray)
shippingTotal = shippingTotal + Math.max(...shipArray);
updateShoppingTotal(shippingTotal);
}
const updateShoppingTotal = (shipping) => {
var tempCost = 0;
var finalCost = 0;
var tempCostArray = [];
var quantity = window.localStorage.getItem("productData");
if(!storageData)
setBasketEmpty(false);
if(quantity){
JSON.parse(quantity).map(quan => {
tempCost = quan.product.product_price * quan.quantity;
tempCostArray.push(tempCost);
});
tempCostArray.forEach(item => {
if(!isNaN(item)){
finalCost = finalCost + item + shipping;
}
});
setShipping(shipping);
window.localStorage.setItem("originalPrice", parseFloat(finalCost).toFixed(2));
window.localStorage.setItem("basketTotal", parseFloat(finalCost).toFixed(2))
setShoppingTotal(parseFloat(finalCost).toFixed(2))
}
}
我也在使用 ReactJS,而不是 React-Native。
谢谢
编辑:为了安全起见,我尝试手动输入一些随机数,但似乎 shipArray
确实是问题所在,所以如果有人知道为什么要添加一个数组中的非数字将很有帮助!
可能是散布操作...
如果您在旧手机上进行测试(尤其是那些便宜的“燃烧器”TracFones),那么它们没有很多现代 JS 功能(很确定没有传播,没有箭头功能,甚至可能没有让?)。
我曾经为那些和许多你不能使用的现代 JS 东西开发。它们通常是 运行 Android 4.4 或更早版本。
一个很好的资源是 can I use(link 传播)。您会注意到 Android 4.4
不支持编辑: 如果这段代码由 Babel 转译,它可能会用更老派的东西替换这种东西。
如果我有大脑我会很危险!哈哈
所以为了查看产品,我有 2 个组件,一个用于较大的设备,一个用于移动设备。
对于第一个组件,我将运费添加到 localStorage 但我没有为移动组件这样做,所以当我尝试在移动设备上阅读 item.product.shipping_cost
时,它当然不能发现它是这样说 undefined
.
这里的血腥台词:
oldBasket.push({product: {shipping_cost:this.state.productData.shipping_cost,});
该行不在移动组件上!
感谢大家的指教