[英]Get matched range value from array javascript
我有一個名為 range 的數組和一個查找變量。 現在我試圖從我的范圍數組中獲取匹配的范圍值。 我試圖減少方法,但它給了我一個意想不到的輸出。
實際產量
預期輸出
我的代碼
var lookup = 51;
var range = [0, 100, 150, 200, 300, 300.2];
let filtered = range.reduce((prev, curr) => Math.abs(curr - lookup) < Math.abs(prev - lookup) ? curr : prev);
console.log(filtered); //100
在這種情況下不起作用
const lookup = 201;
const range = [200, 250, 300, 0, 450, 898].reverse();
const result = range.find(num => num <= lookup);
console.log(result); //0
你期望的結果是從范圍陣列單號,所以你應該使用.find
代替.reduce
。 從右邊開始迭代,對於小於或等於查找的第一個被迭代的元素返回 true。
const lookup = 51; const range = [0, 100, 150, 200, 300, 300.2].reverse(); const result = range.find(num => num <= lookup); console.log(result);
如果數組不一定先排序,則對其進行排序。
const lookup = 201; const range = [200, 250, 300, 0, 450, 898].sort((a, b) => b - a); const result = range.find(num => num <= lookup); console.log(result);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.