javascript中的整数千个分隔符

时间:2016-09-29 19:54:10

标签: javascript

我有以下内容 如何将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?

2 个答案:

答案 0 :(得分:3)

以下是toLocaleString()的使用方法(我已将您的样本简化为必需品)

&#13;
&#13;
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;
&#13;
&#13;

您希望在数字上使用它,因此您首先要Number(obj[key])然后在结果上调用.toLocaleString(),但是您的代码正在执行操作反转。

至于你的第二个问题 - 你不能有格式化的数值。 JavaScript显示最多&#34;方便的数字&#34;方式可能,虽然这不是最好的方式。通常,小数部分中的任何额外零都将被隐藏,而太长的数字将缩短为科学记数法(例如1e24)。

如果要显示格式化的数字数据,则必须以字符串形式完成。如果要显示精确的小数位数,请使用返回字符串的Number#toFixed()

&#13;
&#13;
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;
&#13;
&#13;

答案 1 :(得分:0)

尝试更换:

obj[key] = Number(obj[key].toString().toLocaleString());

使用:

obj[key] = Number(obj[key]).toLocaleString();