2013-06-26 2 views
0

정확하게 json 배열을 반복하여 위치 ID와 d3 객체 ID를 일치시켜야합니다.특정 매개 변수를 사용하여 객체 배열을 반복하기

여기 (생성 루비 레일) 어레이의 단편이다 : 나 드래그 & 드롭 기능을 Y

{ 
    "name": "Test", 
    "locations": [{ 
     "city_id": 1, 
     "x": 0, 
     "y": 0 
     }, { 
     "city_id": 2, 
     "x": 0, 
     "y": 0 
     }, { 
     "city_id": 3, 
     "x": 0, 
     "y": 0 
     }, { 
     "city_id": 118, 
     "x": 0, 
     "y": 0 
     }, { 
     "city_id": 117, 
     "x": 0, 
     "y": 0 
     }, 
    ], 
    "city": [{ 
     "id": 118, 
     "name": "London" 
     }, { 
     "id": 117, 
     "name": "New York" 
     }, { 
     "id": 1, 
     "name": "Miami" 
     }, { 
     "id": 3, 
     "name": "Duabi" 
     }, { 
     "id": 2, 
     "name": "Hong Kong" 
     } 
    ] 
} 

&는 X의 값을 수집하기 위해. 개체를 떨어 뜨리면 x & y 값의 위치를 ​​업데이트하기 위해 게시물을 보냈습니다. 그러나, 그것은 내 루프 isnt 구체적인만큼 정확한 ID로 업데이 트를 보냅니다.

그래서 지금은 &는 D3 객체로 일치하는 도시의 위치를 ​​수집 할 수있는 방법을 찾아야/cities.So I는 다음과 같이 통해 루프 :

.attr("transform", function(d,i) {return "translate("+json.locations[i].x+","+json.locations[i].y+")" ;}) 

을하지만 이것은 단지 아무것도 일치하지 않고 배열을 간다 . 따라서 본질적으로 내 루프가 &을 통과하여 ID가 ​​&과 상관되는지 확인한 다음 해당 위치를 관련 d3 개체에 할당합니다. 따라서 도시 ID : 118을 끌면 & 위치가 city_id로 떨어졌습니다. 188은 city_id : 1이 아니라 문제를 업데이트해야합니다.

가능합니다.

미리 감사드립니다.

답변

0

이런 뜻입니까?

//i don't know where is it from 
given_id = 118; 

for(i=0;i<json.locations.length;i++) { 
    var id = json.locations[i].city_id; 
    if(id==given_id) { 
     var x = json.locations[i].x; 
     var y = json.locations[i].y; 
     console.log(x+","+y); 
     //do something with x and y 
    } 
} 

http://jsfiddle.net/LyQZ6/

+0

안녕, 답장을 보내 주셔서 감사합니다 - 약간. given_id는 중첩 된 객체 "city"에서 왔고 도시 둥지에서 "id"를 수집해야합니다. 그래서 대신 var city = json.city [i] .id를 시도했습니다. . 그러나 "id"가 존재하지 않는 것을 계속해서 버린다. 모든 아이디어 – Jose

+0

하지만 당신의 사건이 무엇인지 이해하지 못합니다. 언제 실행되고 어떻게 _input_ 데이터를 얻나요? – mkutyba

+0

json으로 정의 된 ajax 호출을 통해 데이터를 가져옵니다. 도시에 대한 데이터를 수동으로 입력하고 드래그 앤 드롭 기능을 통해 위치를 업데이트합니다. 따라서 마우스 이벤트가 끝나면 실행됩니다. – Jose

관련 문제