0

编辑:所以我想要一个函数,它接收一个数组,例如['foo',2,'bar',4,5]一个元素'bar',并返回最近的元素。在这种情况下,它应该返回4(而不是2因为4is after 'bar')。

有什么简单的方法来做到这一点?....寻找使用像 underscore.js 这样的功能样式的东西...

我知道我可以通过蛮力方式(迭代)来做到这一点,但想知道是否有一种聪明的方式(比如数组数学的 mod 大小)可以使这一行或两行。

4

1 回答 1

2

怎么样:

function closest(arr, val) {
    var idx = arr.indexOf(val);
    if(idx < 0 || arr.length === 1) { return null; }
    return (idx+1) < arr.length ? arr[idx+1] : arr[idx-1]
}
于 2013-10-29T19:38:14.997 回答