2013-04-16 2 views
1

JavaScript indexOf() 메서드에 문제가 있습니다. 나는 내가 일반적으로 알고 발견되지 않는 값으로 표시가 -1 반환 배열에 존재 알고 변수의 인덱스를 얻을 때 나는 배열 ...JavaScript indexOf() 배열에 10 진수 값이있는 경우 -1을주는 메서드

 pointLatArray = new Array(); 

있습니다. 내 코드는 다음과 같다 때 .. 내가 콘솔에 로그인 한 다음 얻을

 setlat = 52.6688391881732; 
     pointArrayIndex = pointLatArray.indexOf(setlat); 
     console.log(setlat + " " + pointLatArray[8] + " " + pointArrayIndex); 

..... 그러나

 04-16 12:35:31.370: D/CordovaLog(7048): 52.6688391881732 52.6688391881732 -1 

내가 pointLatArray와 setlat를 대체하여 코드를 변경 [8]에서 다음 라인 ....

 pointArrayIndex = pointLatArray.indexOf(pointLatArray[8]); 

01,235 .......가 예상대로 대신 -1 (8)의 정확한 위치를 표시 인덱스 콘솔에 기록 된 다음 도착
 04-16 12:46:17.230: D/CordovaLog(8497): 52.6688391881732 52.6688391881732 8 

변수 setlat와 같은 긴 십진수 세트를 사용하고 있기 때문에 그렇습니까? 그렇다면, 또는 누군가가 고칠 수있는 제안을한다면, 나는 그것을 대단히 감사 할 것입니다.

많은 감사

답변

2

두 숫자의 엄격한 비교는 좋지 않습니다. 아마 여기서 관찰 한 것은 반올림 오류입니다. 숫자는 당신과 똑같지 만 작은 엡실론에 따라 다를 수 있습니다.

내가보기에 하나의 옵션은 엡손 비교 (예 : 0.000000000001 또는 1e-12과 같이 작은 숫자로 허용 숫자가 다른 것)를 사용하여 custom indexOf function을 사용하는 것입니다.

+0

Ok, 건배, 배열 내에서 위도 값의 인덱스를 얻으려고 할 때 내 대안은 무엇입니까? – hotshots

+0

죄송합니다. 방금 옳은 링크를 찾고 있었어요. 마지막 문장을 한번보세요. –

+0

감사합니다. 나는 지금 거기를 들여다 볼 것이고, 나는 그것으로부터 무엇인가를 얻을 수 있는지 봅니다. – hotshots