2013-06-26 2 views
0

Мне нужно точно пропустить мой массив json для соответствия идентификаторам позиций и идентификаторов объектов d3.Зацикливание через массив объектов с определенными параметрами

Вот фрагмент из массива (рубина на рельсах генерируемого):

{ 
    "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 & y. Тем не менее, он отправляет обновление в правильный идентификатор, так как мой цикл не является достаточно конкретным.

Так что теперь я должен найти способ, чтобы собрать места города & соответствуют их d3 объектов/cities.So я петельные через так:

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

Но это как раз проходит через массив без согласования ничего , Поэтому я хотел бы, чтобы по существу мой цикл прошел через &, чтобы проверить, коррелируют ли идентификаторы &, затем назначьте это местоположение соответствующему объекту d3. Так, если город id: 118 перетаскивается & упал местоположение city_id: 188 должен обновить not 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 должен поступать из вложенного объекта «город» и собирать «id» из городского гнезда. Поэтому я попробовал var city = json.city [i] .id; , Но продолжает бросать, что «id» не существует. Любые идеи – Jose

+0

, но я не понимаю, что ваш случай, когда он выполняется и как вы получаете _input_ данные? – mkutyba

+0

Я получаю свои данные через вызов ajax, который определяется как json. Данные для города были введены вручную, а местоположения обновлены с помощью функции перетаскивания и перетаскивания. Таким образом, он будет выполнен, когда событие мыши закончится. – Jose