簡體   English   中英

將數字四舍五入到 Javascript 中數組中最接近的最高數字

[英]Round off number to the nearest Highest number from array in Javascript

我有一個要求,我有一個數字數組,並且經過一些計算后我也得到一個新數字。 得到這個新數字后,我需要將它四舍五入到數組中最接近的最大值 例如:

var 計數 = [2,33,61,92,125,153,184,215,245,278,306,335,365]

因此,如果新數字是 35,那么它應該從數組中檢查並顯示數字 61 而不是 33。它應該始終四舍五入到數組中的最高數字。

我試過了,但它只返回了數組中最接近的值,而不是數組中的最高值。 我可以知道我在哪里 go 錯了或者需要做哪些額外的檢查?

var counts = [2,33,61,92,125,153,184,215,245,278,306,335,365],
  goal = 35;

var closest = counts.reduce(function(prev, curr) {
  return (Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev);
});

console.log(closest);

使用.find()

確保您的數組已排序,否則會給您錯誤的答案。

 var counts = [2,33,61,92,125,153,184,215,245,278,306,335,365] var goal = 33; var closest = counts.find(numb => numb >= goal); console.log(closest);

以下返回計數大於目標的所有值中的最小值。

 var counts = [2,33,61,92,125,153,184,215,245,278,306,335,365], goal = 35; let min = Math.min(...counts.filter( num => num >= goal )); console.log(min)

試試這個代碼。 它適用於已排序和未排序的 arrays。

 let countsArr = [2,36,61,92,125,153,184,215,245,278,306,335,365]; const goalValue = 35; let diff = Number.MAX_VALUE; const closestMax = countsArr.reduce((acc, curr) => { const currDiff = curr - goalValue; if((currDiff > diff) || (currDiff < 0)) { return acc; } else { diff = currDiff; return curr; } }); console.log(closestMax);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM