查找数组中的下一个元素,如果最新的先去

Find next element in array, if latest go first

本文关键字:最新 如果 元素 数组 下一个 查找      更新时间:2023-09-26

如何获得数组中的下一个元素,但是,如果是最新的,则转到数组中的第一个可用元素

[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

看起来很简单,只是一个简单的循环:

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]
}

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

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))