2017-03-17 2 views
0

저는이 포럼을 도처에서 보았습니다. 누군가가이 일을 도울 수 있습니까? 기본적으로 indexOf는 저장된 변수에 -1을 반환합니다. 나는 간단한 것을 놓친 것이지만 그것을 찾지 못하는 것 같습니다. https://jsfiddle.net/qmn7h7pb/ 은 매우 간단하지만 바르가 교체 될 때 작동하지 않습니다 - Stumped - indexOf가 저장된 변수에 -1을 반환합니다.

var t1 = { 

    "properties" : [ 
     { 
      "id": 1, 
      "streetName" : "N. 10th", 
      "blockNo": "5800", 
      "addresses" : [5800, 5801, 5802, 5803, 5804, 5005], 
      "home": [5802] 
     }, 
     { 
      "id": 2, 
      "streetName" : "N. 10th", 
      "blockNo": "5900", 
      "addresses" : [5900, 5901, 5902, 5903, 5904, 5905], 
      "home" : [5904, 5905] 
     } 
    ] 
} 


var myProp = t1.properties; 

var list = myProp[0].addresses; 

var atHome = myProp[0].home; 

var homeIndex = list.indexOf(atHome); 


document.write(homeIndex); //returns -1. Why is this when the others work? 
document.write(atHome); //returns 5802 
document.write(list.indexOf(5802)); //returns 2, which is what I'm looking for. 

JSFiddle

는 여기에있다. 변수를 바꿀 경우

homeIndex = list.indexOf (5802), 2 (올바른 값)를 반환합니다.
homeIndex = list.indexOf (atHome)는 -1을 반환합니다. (잘못된)

누구든지 설명 할 수 있습니까?

+1

'document.write (atHome);은'atHome' 배열을 문자열로 변환합니다. 당신은 당신의 코드에서'var homeIndex = list.indexOf (atHome [0]);'을 수행해야한다. – Redu

+1

Thx하지만 인덱스 번호를 알고 있으면 indexOf() 함수가 필요하지 않습니다. 그러나 아래 답변을 찾았습니다. 나는 이것이 간단한 수정이지만 매우 중요하다고 느낍니다. Thx 당신의 도움. – user3112937

+0

'console.log' 대신에'document.write' 나'alert' 또는 로깅을 위해서라면 * 항상 * JSON.stringify (...)에 값을 넣어야합니다 – Bergi

답변

0

사실 myProp[0].home 반환 문자열과 모든 요소가 정수, 그래서 만약 당신이 다음 INT로 변환 확인해야 배열에서, 여기 변경

var atHome = parseInt (myProp[0].home); 

데모 : https://jsfiddle.net/qmn7h7pb/1/

+1

고마워요! 나는 그것이 간단하다는 것을 안다. 그러나 나는 결코 그 뉘앙스를 이해하지 못했을 것이다. 그 남자. 내가 할 수 있다면 너에게 엄지 손가락을 얹을거야. – user3112937

0

당신이해야 부키 따 배열을 통해 루프 요소를 얻을 :

var myProp = t1.properties; 

var list = myProp[0].addresses; 

var atHome = myProp[0].home; 
for(var i = 0 ; i < atHome.length; i += 1) { 
var homeIndex = list.indexOf(atHome[i]); 
    alert(homeIndex); 
} 

https://jsfiddle.net/1L9e4bxr/