2013-02-15 2 views
1

Я только начал использовать Underscore.js и был бы признателен за некоторые советы о том, как сделать следующее. У меня есть следующие JSON, которые были разобраны и хранящимися в переменной parsedJson:Underscore.js - Итерация по объекту и подсчет свойств объекта

{ 
    "name": { 
     "cinema": { 
      "size": { 
       "w": 256, 
       "h": 200 
      }, 
      "frame": { 
       "x": 0, 
       "y": 0, 
       "w": 256, 
       "h": 200 
      } 
     }, 
     "dirt": { 
      "size": { 
       "w": 128, 
       "h": 64 
      }, 
      "animaton": { 
       "frames": 0, 
       "speed": 0 
      }, 
      "frames": { 
       "frame1": { 
        "x": 128, 
       }, 
       "frame2": { 
        "x": 128, 
       }, 
       "frame3": { 
        "x": 128, 
       }, 
       "frame4": { 
        "x": 128, 
       } 
      } 
     }, 
     "grass": { 
      "size": { 
       "w": 128, 
       "h": 64 
      }, 
      "animaton": { 
       "frames": 0, 
       "speed": 0 
      }, 
      "frames": { 
       "frame1": { 
        "x": 0, 
       }, 
       "frame2": { 
        "x": 0, 
       } 
      } 
     }, 
     "icecream": { 
      "size": { 
       "w": 128, 
       "h": 110 
      }, 
      "frame": { 
       "x": 128, 
      } 
     }, 
     "tree": { 
      "size": { 
       "w": 128, 
       "h": 110 
      }, 
      "frame": { 
       "x": 0, 
      } 
     } 
    } 
} 

То, что я хочу добиться того, чтобы установить значение animation.frames (если она существует) на количество кадров в кадрах собственности.

Таким образом, значение dirt.animation.frames должно быть установлено на 4.
и значение grass.animation.frames должно быть установлено на 2.

Я понимаю, что для подсчета числа свойств объекта в н Я могу использовать _size(), но как мне нужно перебирать каждое имя в объекте и устанавливать значение animation.speed, если оно существует. Этот объект также является динамическим, поэтому в нем может быть произвольное количество имен.

Благодарим за помощь, ответ будет начат в правильном направлении, как использовать underscore.js.

Примечание: Я использую CoffeeScript

ответ

5

JS, не CS, но:

_.each(obj.name,function(val){ 
    if('animation' in val && 'frames' in val.animation) { 
     val.animation.frames = _.size(val.frames); 
    } 
}); 
Смежные вопросы