Javascript JS,从数组中获取最近的前一个数字

Javascript JS,从数组中获取最近的前一个数字,javascript,arrays,math,shopify,Javascript,Arrays,Math,Shopify,我需要从数组中检索最接近的数字,但是此数字必须始终使用数组中较低的数字,即使它不是最接近的数字,我需要在纯JS中执行此操作,例如:- Input = 499 Array = [100, 250, 500, 1000, 5000] Answer = 250 Input = 900 Array = [100, 250, 500, 1000, 5000] Answer = 500 编辑:Ninas解决方案用于细化数字,但在我的代码中使用时出现错误:- Uncaught TypeError: Can

我需要从数组中检索最接近的数字,但是此数字必须始终使用数组中较低的数字,即使它不是最接近的数字,我需要在纯JS中执行此操作,例如:-

Input = 499
Array = [100, 250, 500, 1000, 5000]
Answer = 250

Input = 900
Array = [100, 250, 500, 1000, 5000]
Answer = 500
编辑:Ninas解决方案用于细化数字,但在我的代码中使用时出现错误:-

Uncaught TypeError: Cannot destructure 'undefined' or 'null'.
用法:-

var qtyBreaks = $("#SingleOptionSelector-0>option").map(function() { 
  if ($(this).val() != "sample"){
    return parseInt($(this).val());
  }
});

$('#Quantity-product-template').on('input', function() {
  console.log(getSmaller($(this).val(), qtyBreaks));    
  // qtyBreaks = [100, 250, 500, 1000, 5000]
  // $(this).val = 102 (always number)
});

function getSmaller(value, array) {
  return array.find((v, i, { [i + 1]: next }) => v === value || next > value);
}

您可以按降序对数组进行排序(在这种情况下,您可以使用
array.reverse()
)并找到小于或等于输入值的第一个元素(
array.find()

希望这有帮助

var输入1=499
变量数组1=[10025050010005000]
var输入2=900
变量array2=[10025050010005000]

var output1=array1.reverse().find(item=>item item您可以通过查找数组的下一个值来找到它

函数get更小(值,数组){
返回array.find((v,i,{[i+1]:next})=>v==value | | next>value);
}
log(getSmaller(400[10025050010005000]);//250
log(getSmaller(500[10025050010005000]);//500

log(getSmaller(5000、[10025050010005000]));//5000
发布的问题似乎根本不包含任何解决问题的尝试。堆栈溢出希望您这样做,因为您的尝试有助于我们更好地了解您想要什么。请编辑问题以显示您尝试了什么,以便说明您在中遇到的特定障碍。有关更多信息,请参阅如果你想找
500
你想得到
250
还是
500
?请加上你的try。近距离投票人:这个问题是关于主题的。它简短明了。它不包含MCVE是无关紧要的,因为它并不表示你尝试过任何东西。所以你基本上需要列表中最大的数字hat仍然
不知道这个语法。这样更干净。Nina谢谢,这给了我正确的数字,但是我在上下文中使用时出错,请参阅问题edit。@MT,什么类型是
$(this).val()
?请为此添加一个值。如果“查找”有效,则得到一个数组。第三个参数是数组引用,它是可分解的(如果该词存在)它应该可以工作。在调用
find
之前,也许您可以记录数组并查看一下内容。如果该数字大于数组中的最后一个数字,则它现在可以工作。我将返回未定义的数字,例如10000应该返回5000