JavaScript while循环没有'不能在有条件的情况下工作
JavaScript while loop doesn't work with condition
我创建了一个名为getIndex
的函数,用于获取我从数组中搜索的索引
当我更改while (1)
而不是while (max < min)
时,循环正在工作,但条件为(while (max < min)
),返回-1。但我需要条件来检查我的搜索是否不在data
数组中。为什么它在有条件的情况下返回-1?
// assume my array looks-like this.
var data = [1, 2, 3, 4, 5, 7, 8, 9, 10];
function getIndex(search, arr) {
var min, max, guess, count;
min = 0;
max = arr.length - 1;
count = 0;
// If my search is not present in array. Return -1.
while (max < min) {
count++;
guess = Math.floor((min + max) / 2);
if (arr[guess] === search) {
return guess;
} else if (arr[guess] < search) {
min = guess + 1;
} else {
max = guess - 1;
}
}
return -1;
}
getIndex(8, data); // return -1
将while条件更改为while(max>min)
你在这里犯了一个错误。你检查Max是否小于min,而在循环中你将min值设置为0,将Max设置为数组长度。那么Max怎么能小于min呢?由于条件为false,所以不进入循环是正确的。在这种情况下,你需要"最小值小于最大值"或"最大值大于最小值"(两者都有相同的用途),这样它就会正常工作。
在while条件中更改最大值和最小值之间的操作
// assume my array looks-like this.
var data = [1, 2, 3, 4, 5, 7, 8, 9, 10];
debugger;
function getIndex(search, arr) {
var min, max, guess, count;
min = 0;
max = arr.length - 1;
count = 0;
// If my search is not present in array. Return -1.
while (max > min) {
count++;
guess = Math.floor((min + max) / 2);
if (arr[guess] === search) {
return guess;
} else if (arr[guess] < search) {
min = guess + 1;
} else {
max = guess - 1;
}
}
return -1;
}
getIndex(8, data); // return -1
您可以使用for循环,更容易理解
// assume my array looks-like this.
var data = [1, 2, 3, 4, 5, 7, 8, 9, 10];
function getIndex(search, arr) {
var guess = -1;
// If my search is not present in array. Return -1.
for(var i=0;i<arr.length;i++){
if(arr[i]===search)guess = i;
}
return guess;
}
console.log(getIndex(8, data)); // return -1
相关文章:
- 为什么jQuery代码段在没有IFrame的情况下可以工作,而在有IFrame时却不能工作
- 名称不能以''jquery-if-else条件中的字符
- JavaScript while循环没有'不能在有条件的情况下工作
- 匹配由单个空格分隔的单词,单词的开头或结尾不能有空格
- Socket.io - 为什么所有用户不能有不同的名称
- IOS自动化:有没有办法;刷新'元素树(或者Instruments'认为可以访问和不能访问的任何内容)
- 如果我可以'我不能保证他们;I’’I’’’’我都有相同的分类
- NodeJS-“;这种类型的响应不能有正文&”;
- 2 可变结果不能有两个
- JS有条件地在Chrome上工作,但不能在Firefox上工作
- 不能理解条件执行流程
- 不能基于条件重新调用角函数
- 不能比较条件语句中int类型的变量
- JavaScript onsubmit preventDefault不能有条件地工作
- 不能在条件中更改var
- 不能有未定义的属性
- 为什么选择选项更改事件不能有这个和 event.target 来获取所选值
- 我怎么能有条件地做一个基于我需要的数字重复
- jQuery css()不能在条件语句中工作
- TwilioRestClient和Twilio的区别是什么?设备,为什么我可以使用RestClient调用,但不能有实时