簡體   English   中英

從數組javascript獲取匹配的范圍值

[英]Get matched range value from array javascript

我有一個名為 range 的數組和一個查找變量。 現在我試圖從我的范圍數組中獲取匹配的范圍值。 我試圖減少方法,但它給了我一個意想不到的輸出。

實際產量

  • 我的值是 51 然后它返回我 100

預期輸出

  • Ex 1 - 我的值是 51 它在 0-100 之間它應該返回 0 Ex 2 - 我的值是 135 它在 100-150 之間它應該返回 100

我的代碼

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.

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