Javascript 如何在不使用for循环或任何数组方法的情况下检查数组中是否存在元素

Javascript 如何在不使用for循环或任何数组方法的情况下检查数组中是否存在元素,javascript,arrays,Javascript,Arrays,如何在不使用for循环或任何类似map,reduce的数组方法的情况下,检查数组中是否存在元素? let numList=[1,2,3,6,9,2,-8,20]我想检查9和30,如果它存在或不存在,而不使用for循环或任何数组方法我想一个选项是将数组转换为集合并检查集合。has: let numList=[1,2,3,6,9,2,-8,20]; 常量集=新集(numList); 控制台日志(set.has(9)); 控制台日志(set.has(30))您可以使用JSON.stringify将数

如何在不使用
for
循环或任何类似
map
reduce
的数组方法的情况下,检查数组中是否存在元素?
let numList=[1,2,3,6,9,2,-8,20]
我想检查9和30,如果它存在或不存在,而不使用
for
循环或任何数组方法我想一个选项是将数组转换为
集合
并检查
集合。has

let numList=[1,2,3,6,9,2,-8,20];
常量集=新集(numList);
控制台日志(set.has(9));

控制台日志(set.has(30))您可以使用JSON.stringify将数组转换为字符串,并使用检查字符串是否包含特定的搜索值

让numList=[1,2,3,6,9,2,-8,20];
设m=JSON.stringify(numList)

log(m.includes(-8))
如果可以使用while循环,则可以实现二进制搜索。因为这是一个面试问题,如果这符合他们的要求,我不会感到惊讶

这里是psuedocode中的传统算法,借用自

BinarySearch(一个[0..N-1],值){
低=0
高=N-1
而(低A[i]对于所有i的值值)
高=中-1
else if(A[mid]<值)
低=中+1
其他的
中途返回
}
未找到返回值//将在索引“low”处插入值
}

如果你有某种限制,你能解释一下原因吗?为什么你不能使用循环或任何内置方法?@Evantimboli是一个采访问题:-)我想是的;如果排除for循环,那么while循环也很可能被排除。构造
当然至少是线性时间;只有当您需要进行多个查询时,它才有帮助。
BinarySearch(A[0..N-1], value) {
  low = 0
  high = N - 1
  while (low <= high) {
      // invariants: value > A[i] for all i < low
                     value < A[i] for all i > high
      mid = (low + high) / 2
      if (A[mid] > value)
          high = mid - 1
      else if (A[mid] < value)
          low = mid + 1
      else
          return mid
  }
  return not_found // value would be inserted at index "low"
}