我有一个 JavaScript 数组和一个这样的变量;
var a = [0, 1200, 3260, 9430, 13220],
b = 4500;
选择数组中仍然小于或等于变量的最大值的最聪明方法是什么?
在此示例中,我需要选择 3260
。
我可以做这样的事情;
$.each(a, function(i){
if(a[i] <= b && a[i+1] > b){
var c = a[i];
return false;
}
});
但我认为如果选定的数组值是最后一个,那可能行不通。更不用说,对我来说,它看起来像是一些相当简单的代码。
是否有更聪明/更简洁的方式来实现我所追求的目标?
(是的,我知道我不应该为此使用 jQuery 循环,但我在输入示例时很懒惰)
最佳答案
另一种方法是结合使用数组过滤和 apply(),我认为这是一种可读性很强的方法。 对 filter() 的调用仅返回 a 中不满足谓词函数的元素数组,然后 apply() 以每个元素作为参数调用 Math.max。
var a = [1, 2, 3, 4, 5];
var b = 4;
var result = Math.max.apply(Math, a.filter(function(x){return x <= b}));
结果将等于 4。
关于javascript - 选择小于数组中变量的最大数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12070757/