javascript中整数的千位分隔符

Thousands separator for integers in javascript

本文关键字:千位 分隔符 整数 javascript      更新时间:2023-09-26

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

以下是如何使用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)

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

关于你的第二个问题——不能有一个格式化的数值。JavaScript以最"方便"的方式显示数字,尽管这不是最好的方式。一般来说,小数部分的任何额外的零将被隐藏,而太长的数字将被缩短为科学记数法(例如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);

尝试替换:

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

:

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