如何将一个数字分成n组

2024-01-10

我需要将一个数字分成几组数字,然后将这些数字放入一个数组中。然后我将对这些数字进行一些简单的数学运算,然后将它们插入到文本框中。

到目前为止,我只找到了如何将数字拆分为单独的数字,如下所示:

var number = 12354987,
output = [],
sNumber = number.toString();

for (var i = 0, len = sNumber.length; i < len; i += 1) {
output.push(+sNumber.charAt(i));
}

console.log(output);

您可以使用正则表达式来获得您想要的结果。

如果你想从左开始分组,正则表达式非常简单:

// assuming you want to group every 3 digits
var number = 12354987,
    output = number.toString().match(/\d{1,3}/g);

// output: ["123", "549", "87"]

相反,如果您想从右侧开始,例如与货币格式一样,正则表达式需要更加清晰:

var number = 12354987,
    output = number.toString().match(/(\d+?)(?=(\d{3})+(?!\d)|$)/g);

// output: ["12", "354", "987"]

您可以更改要分组的位数,只需替换3 inside \d{3}与所需的金额。您还可以从变量获取此类值,在这种情况下您必须使用正则表达式构造函数 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp构建您的正则表达式实例。

Edit:要转换output再次到数字你可以使用数组映射法 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map如下:

var numbers = output.map(Number);

希望能帮助到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将一个数字分成n组 的相关文章

随机推荐