我需要平均分配一個數字并將值推送到陣列中。我以 100 為例,但是當我這樣做時,它會變為 [28, 24, 24, 24],我需要它是 [25, 25, 25, 25]
const divide = () => {
var number = 100
var n = 4
var values = []
while(number > 0 && n > 0){
var a = Math.floor(number / n / 4) * 4
number -= a
n--
values.push(a)
}
console.log(values)
}
uj5u.com熱心網友回復:
如果我正確理解您的問題:
const divide = (num = 100, n = 4) => new Array(n).fill(num / n);
uj5u.com熱心網友回復:
該Math.floor()函式回傳小于或等于給定數字的最大整數,在您的代碼中,此函式使結果不正確
這是一個正確的代碼:
const divide = () => {
var number = 100
var n = 4
var values = []
for(int i=1;i<=4;i ){
values.push(a/4)
}
console.log(values)
}
uj5u.com熱心網友回復:
這是另一個版本:
const divide = (num = 100, n = 4) => {
const f=Math.floor(num/n);
return [...Array(n)].map((_,i)=>i-n 1?f:num-i*f);
}
console.log(divide());
console.log(divide(100,3));
uj5u.com熱心網友回復:
您的代碼中有幾個問題,減少 n 意味著下一個回圈的除值將改變。
這是一個可以正常作業的更新版本:
const divide = (number = 100, n = 4) => {
const values = [];
let times = n;
while(times > 0){
values.push(Math.floor(number / n));
times--;
}
return values;
}
console.log(divide());
為了解釋這應該如何作業,為了在陣列中第 n 次獲得相同的數字,不應更改 n。因此,我們將其值復制到用于創建/控制回圈的區域變數。每次回圈運行時,我們將目標數除以 n - 對于所有迭代,因此我們得到相同的數字,并且它始終是 100 的 1/4。希望這會有所幫助..
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/488507.html
標籤:javascript 功能
