我从MongoDb获取数字,我通过使用replace()
方法删除任何空格或逗号来解析它们的格式。虽然这在一段时间内完美地工作,但我发现它在值为零时产生以下错误
Uncaught TypeError: undefined is not a function
包含质疑方法的代码段如下:
function Query_Member_points_credits_summaryExecute()
{
var Balance = Apperyio.storage.MS_Member_Points_Credits_Summary.get("$['Balance']");
var balance = parseFloat(Balance.replace(',', '').replace(' ', ''));
console.log("balance " + balance);
var threshold = parseFloat(50000);
console.log("threshold " + threshold);
}
第二行引起的错误。
调查尝试:
我用以下内容替换了该行:
一个。 var balance = parseFloat(Balance.replace(',', ''));
湾var balance = parseFloat(Balance.replace(' ', ''));
C。 var balance = Balance.replace(',', '').replace(' ', '');
只有这一点适用于balance = 0
:
var balance = parseFloat(Balance);
使用零以外的数字,包括0.000001,工作正常
我感到困惑可能是什么原因
答案 0 :(得分:1)
我首先建议,之后:
var Balance = Apperyio.storage.MS_Member_Points_Credits_Summary.get("$['Balance']");
输入一些调试代码,告诉你Balance
实际是什么,类似于:
alert(typeof(Balance));
从您的错误消息中,它可能是undefined
。如果是这种情况,那么您需要追踪appery.io
为什么为零提供未定义值的原因。
如果不未定义,则可能是某些奇怪的类型(即不是字符串)可能会影响replace
次呼叫的管道。
如果appery.io
为您提供了number
类型为零而string
类型为非零(根据您的评论),则快速“&”修复可能是这样的:
// Ensure number made string before replace.
var balance = parseFloat((""+Balance).replace(',', '').replace(' ', ''));
然后我会联系他们询问这是否是他们的错误。