때때로 배열 내의 두 문자열을 비교하는 데 실패합니다. 루프는 if
의 루프에서만 가끔씩 오류가 발생합니다. 아래의 예제 코드는 문제를 구현하기위한 것입니다. searchTable
에서배열의 값 비교가 실패합니다.
searchTable.sort();
for(n=1;n<searchTable.length;n++){
// alert(searchTable[n-1]!=searchTable[n]);
if(searchTable[n-1]!=searchTable[n]){
idx++;
memTable[idx]=searchTable[n];
}
}
값은 확실히 strings
있으며, 모든 값 중 하나와 유사하지 않다.
루프에서 모든 값은 [n-1]
및 [n]
의 비슷한 값 임에도 불구하고 memTable [idx]에 설정됩니다. 활성화 된 alert()
은 올바른 비교 결과를 나타내지 만 if
이 모두 통과합니다. if
의 비교는 가치가 아니라 기준으로 수행됩니다. 이것이 어떻게 가능한지? 자바 스크립트 인터프리터의 버그인가요?
비교 표현에서 두 멤버에 valueOf()
-methods를 추가하여 해결할 수 있습니다. 나는이 실패한 whithin을 if
으로 만 돌파했습니다. 때때로 코드가 작동하지 않는 이유를 파악하는 데 오랜 시간이 걸릴 수 있습니다.
1) 문제의 jsfiddle을 보여 숫자 및 문자열 구분하지 않습니다. 2) alertType [n] searchTable - 아마도 객체가 아닌 문자열입니다. – mplungjan