我有以下内容 如何将OrderID转换为千位分隔符,即100,000? 我这样做,但它不起作用:
var thousandseparator = [
"QRDER_QTY", "EXEC_QTY", "AVG_PX", "NOTIONAL_USD", "LIMIT_PX", "LIQ_CONSUMPTION"
];
for(var i = 0; i < json.length; i++) {
var obj = json[i];
for(key in obj) {
if(thousandseparator.indexOf(key) != -1) {
obj[key] = Number(obj[key].toString().toLocaleString());
}
}
}
另外,我正在将每个元素转换为整数,如下所示:
var jsondata = document.getElementById("jsonArray").value;
var json = JSON.parse(jsondata);
var parsedData = json.map(function(obj) {
return Object.keys(obj).reduce(function(memo, key) {
var value = obj[key];
//console.log(value);
memo[key] = isNumeric(value) ? Number(value) : value;
//localStorage.setItem("storeditem", value);
return memo;
}, {})
});
但是这样做,像2.40这样的小数转换为2.4。我如何才能成为2.40?
答案 0 :(得分:3)
以下是toLocaleString()
的使用方法(我已将您的样本简化为必需品)
var obj = {
"ROOT_ORDER_ID": "735422197553491",
"AVG_PX": "93.6586",
"NOTIONAL_USD": "477940",
"LIQ_CONSUMPTION": "15.21",
"EXEC_QTY": "5103",
"LIMIT_PX": "93.6100",
"ORDER_QTY": "5103"
}
var thousandseparator = [
"ORDER_QTY", "EXEC_QTY", "AVG_PX", "NOTIONAL_USD", "LIMIT_PX", "LIQ_CONSUMPTION"
];
for(key in obj) {
if(thousandseparator.indexOf(key) != -1) {
obj[key] = Number(obj[key]).toLocaleString();
}
}
console.log(obj)
&#13;
您希望在数字上使用它,因此您首先要Number(obj[key])
然后在结果上调用.toLocaleString()
,但是您的代码正在执行操作反转。
至于你的第二个问题 - 你不能有格式化的数值。 JavaScript显示最多&#34;方便的数字&#34;方式可能,虽然这不是最好的方式。通常,小数部分中的任何额外零都将被隐藏,而太长的数字将缩短为科学记数法(例如1e24
)。
如果要显示格式化的数字数据,则必须以字符串形式完成。如果要显示精确的小数位数,请使用返回字符串的Number#toFixed()
:
var pi = 3.141592;
console.log(pi, typeof pi);
var shortPi = pi.toFixed(2);
console.log(shortPi, typeof shortPi);
var money = 3.50;
console.log(money, typeof money);
var formattedMoney = money.toFixed(2);
console.log(formattedMoney, typeof formattedMoney);
&#13;
答案 1 :(得分:0)
尝试更换:
obj[key] = Number(obj[key].toString().toLocaleString());
使用:
obj[key] = Number(obj[key]).toLocaleString();