javascript - 选择小于数组中变量的最大数字

标签 javascript arrays

我有一个 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/

相关文章:

javascript - 如何让我的内容 2 最初隐藏,然后从右侧滑入?

javascript - jquery 关注多种类型的下一个输入

javascript - 如何删除 anchor 标签的初始自动对焦

javascript - 尝试通过 JavaScript 从字符串中删除一些字符

javascript - 如何在 JavaScript 中对这个对象数组进行分组或合并?

c - 在 C 中调整静态数组的大小

c# - 以字符串数组形式传入多个参数

java - 获取 ArrayIndexOutOfBoundsException 并且不确定为什么

javascript - 如何计算添加元素?

javascript - 在 javascript 中使用自定义条件分割字符串(不重复)