如果最新的话,请在数组中查找下一个元素

时间:2016-11-14 19:21:17

标签: javascript arrays

如何获取数组中的下一个元素,但是,如果是最新的,那么转到数组中的第一个元素。

[1,2,3,4,5].find(3) => 4
[1,2,3,4,5].find(5) => 1
  [1,2,4,5].find(3) => 4
  [1,2,4,5].find(0) => 1

2 个答案:

答案 0 :(得分:2)

只需一个简单的循环就足够简单了:



console.log('[1,2,3,4,5].find(3) =>', findNumber([1,2,3,4,5], 3));
console.log('[1,2,3,4,5].find(5) =>', findNumber([1,2,3,4,5], 5));
console.log('[1,2,4,5].find(3) =>', findNumber([1,2,4,5], 3));
console.log(  '[1,2,4,5].find(0) =>',  findNumber([1,2,4,5], 0));


function findNumber(array, numberToFind) {
  for (var i=0;i<array.length;i++) {
    if (array[i] > numberToFind) {
        return array[i];
    }
  }
  return array[0]
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以创建首先检查数字是否在数组中的函数,如果是,则返回下一个元素,然后使用while循环递增到下一个数字并返回它。

&#13;
&#13;
function findNumber(ar, num) {
  var i = ar.indexOf(num);

  if (i != -1) {
    return (i != ar.length - 1) ? ar[i + 1] : ar[0];
  } else {
    while (true) {
      if (num > Math.max.apply(null, ar) || num < Math.min.apply(null, ar)) return ar[0];
      if (ar.indexOf(num) != -1) {
        return num;
      } else {
        num++
      }
    }
  }
}

console.log(findNumber([1, 2, 3, 4], 2))
console.log(findNumber([1, 2, 4, 5], 3))
console.log(findNumber([1, 2, 5], 6))
console.log(findNumber([1, 2, 5], 0))
&#13;
&#13;
&#13;