我正在撰寫一個函式,這是拼圖的最后一塊,我認為這很容易處理,但是在對 for 和 while 回圈進行了一些不成功的修補后,我嘗試在網上查找它,但仍然找不到回答。我遇到了一些晦澀難懂和復雜的解決方案,但我認為應該有更直接的方法來解決這個問題。例如,如果我有一個陣列
[1, 2, 3, 5, 7, 9]
并且引數是 10,函式應該回傳 6 (1 2 3),因為值的總和應該 <= 10(或傳遞的任何數字)。如果引數為 4,則函式應回傳 3 (1 2),依此類推。
uj5u.com熱心網友回復:
您可以使用for回圈:
const arg = 10
const arr = [1, 2, 3, 5, 7, 9]
let res = 0;
const calc = (arr, limit) => {
for (num of arr) {
if (num res > limit) {
break;
}
res = num;
}
return res;
}
console.log(calc(arr, arg))
uj5u.com熱心網友回復:
.reduce()每個當前值 ( cur) 添加到累加器 ( acc) 并檢查與限制 ( max)。如果acc cur小于限制則回傳acc cur,否則回傳acc。根據Spectric.sort()的評論,如果陣列發生故障,則添加。
const array = [1,2,3,5,6,8];
const mixed = [0,7,3,8,2,1];
const A = 10;
const B = 15;
const closest = (arr, max) => {
return arr.sort((a, b) => a - b).reduce((acc, cur) =>
(acc cur) > max ? acc : (acc cur));
}
console.log(closest(array, A));
console.log(closest(array, B));
console.log(closest(mixed, B));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/478397.html
標籤:javascript 算法
