에서 나는 반복적으로 특정 값을 검색하려고 간단한 배열 [3,7,9]을 가지고있다. 검색 할 값이 존재하지 않으면 배열에 추가되고, 그렇지 않으면 배열에 추가됩니다. 스위치 케이스 구조를 사용하고 있지만 심각한 문제에 직면하고 있습니다.다시 조건
사전 검색 값 2. 모든 함수의 복귀까지 미세하다. 어떤 이유로 코드가 다시 돌아 가기 위해 점프합니다. "case a :"에서 line - itemFound를 'undefined'로 설정합니다. 왜이 점프가 일어날까요?
검색하고 값 5는 휴식을 뒤로 점프; "case b :"에서 다시 itemFound는 "undefined"값을 얻습니다.
는 다른 값으로 더 점프있다.
나는 코드가 조건에서 하나의 전용 스위치의 경우 종료 할 것으로 예상합니까. 어떤 이유 코드에 대한
myArr = [3, 7, 9];
window.onload = init;
function init() {
searchItem(myArr, 2);
searchItem(myArr, 5);
searchItem(myArr, 8);
searchItem(myArr, 10);
searchItem(myArr, 7);
var arrLength = myArr.length;
for (var i = 0; i < arrLength; i++) {
console.log('index ' + i + ' ' + myArr[i]);
// alert(myArr);
}
}
function searchItem(array, itemToSearch) {
var itemFound;
var itemArray = array.slice(0);
var arrLen = itemArray.length;
var midPointIndex = Math.round(itemArray.length/2) - 1;
var midPointVal = itemArray[midPointIndex];
switch (true) {
//case a:
case midPointVal < itemToSearch:
if (arrLen > 1) {
itemArray.splice(0, midPointIndex + 1);
searchItem(itemArray, itemToSearch);
} else {
itemFound = false;
}
break;
//case b:
case midPointVal > itemToSearch:
if (arrLen > 1) {
itemArray.splice(midPointIndex, arrLen - midPointIndex);
searchItem(itemArray, itemToSearch);
} else {
itemFound = false;
}
break;
//case c:
case midPointVal === itemToSearch:
itemFound = true;
break;
}
if (itemFound === false) {
myArr.push(itemToSearch);
myArr.sort();
//arraySort(myArr);
}
console.log('Value ' + itemToSearch + ' found' + ': ' + itemFound);
return itemFound;
}
@Andy : 분명히 그는 배열이 정렬 될 것으로 기대합니다. – Bergi