gpt4 book ai didi

javascript - 我如何在 JavaScript 中将一个数字分成最多 100 个的 block ?

转载 作者:行者123 更新时间:2023-11-29 19:03:31 26 4
gpt4 key购买 nike

我有一个数字(比如说 525)。我想把这个数字分成一个 block 数组,每个值最多 100 个。如果我将 525 拆分成一个数组,它看起来像:

[
100,
100,
100,
100,
100,
25
]

这是我到目前为止尝试过的:

var number = 525;
var array = [];
while (number > 0) {
number = number - 100;
array.push(Math.min(number, 100));
}

这并没有让我走得太远。它只返回 [ 100, 100, 100, 100, 25, -75 ]。我知道使用 while 不是最好的方法,但这是我能想到的。有没有人有任何其他方法可以改进我的代码并提高效率?

最佳答案

您可以算出 number100 整除的次数,然后以编程方式创建该长度的数组:

var number = 525;
var array = new Array(Math.floor(number / 100)).fill(100).concat(number % 100))
// [ 100, 100, 100, 100, 100, 25 ]

您可以将其扩展为任意数量的 block :

function chunkBy(number, n) {
var chunks = Array(Math.floor(number / n)).fill(n);
var remainder = number % n;

if (remainder > 0) {
chunks.append(remainder);
}
return chunks;
}

或者,在执行减法之前简单地按下元素:

var number = 525;
var array = [];
while (number > 0) {
array.push(Math.min(number, 100));
number = number - 100;
}
// [ 100, 100, 100, 100, 100, 25 ]

使用带有箭头函数的 ES6:

const chunkBy = (n) => number => {
var chunks = new Array(Math.floor(number / n)).fill(n);
var remainder = number % n;
console.log('CHUNKS = ', chunks);
if (remainder > 0) {
chunks.push(remainder);
}

return chunks;
};

const chunkBy50 = chunkBy(50);
const chunkBy100 = chunkBy(100);
const chunkBy77 = chunkBy(77);
console.log(chunkBy50(500));
// [ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50 ]
console.log(chunkBy100(500));
// [ 100, 100, 100, 100, 100 ]
console.log(chunkBy77(500));
// [ 77, 77, 77, 77, 77, 77, 38 ]

关于javascript - 我如何在 JavaScript 中将一个数字分成最多 100 个的 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44855276/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com