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