我正在尝试,使用Javascript进行二进制搜索,一切正常,但是我无法控制(显示)未定义的值(我想打印'数字不在列表中'如果项目不在列表中。)
提前致谢。
这是我的代码:
function bSearch(userInput, numb){
//var inputSplit = userInput.toString().split('');
var input = numSort(userInput);
//console.log(input);
var start = 0;
var n = input.length;
//console.log(n);
var end = n-1;
var output = '';
//var mid = (start + end) / 2;
// console.log(mid);
while(start <= end){
var mid = (start + end) / 2;
mid = Math.floor(mid);
//console.log(mid);
if(input[mid] == numb){
output = input[mid];
return output;
}else if(numb < input[mid]){
end = mid - 1;
}else if(numb > input[mid]){
start = mid + 1;
}
} }
function numSort(num){
var temp = '';
var res = '';
arr = num.toString().split('');
var n = arr.length;
for(i=0; i<n-1; i++){
for(d=0; d<n-i-1; d++){
if(arr[d] > arr[d+1]){
temp = arr[d];
arr[d] = arr[d+1];
arr[d+1] = temp;
}
}
}
for(i=0; i<n; i++){
res += arr[i];
}return res;
}
答案 0 :(得分:1)
在函数末尾添加return语句
function bSearch(userInput, numb) {
// lots of code (some vars without declarations ...)
// ...
return 'the number is not in the list';
}
这会阻止undefined
。而是返回字符串。