可以使用JSON.stringify函数的替换符将所有数字转换为指数,然后使用regex删除引号,例如。
const struct = { foo : 1000000000000000000000000, bar: 12345, baz : "hello", boop : 0.1, bad: "-.e-0"};
const replacer = (key, val) => {
if (typeof val === 'number') {
return val.toExponential();
}
return val;
}
let res = JSON.stringify(struct, replacer, 2)
res = res.replace(/"([-0-9.]+e[-+][0-9]+)"/g, (input, output) => {
try {
return isNaN(+output) ? input : output;
} catch (err) {
return input;
}
})
给予:
{âââââ
âââââ "foo": 1e+24,âââââ
âââââ "bar": 1.2345e+4,âââââ
âââââ "baz": "hello",âââââ
âââââ "boop": 1e-1,âââââ
âââââ "bad": "-.e-0"âââââ
âââââ}âââââ