2

Underscore.js を使い始めたばかりで、次の方法についてアドバイスをいただければ幸いです。解析され、parsedJson 変数に格納された次の JSON があります。

{
    "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 値 (存在する場合) を frames プロパティのフレーム数に設定することです。

したがって、dirt.animation.frames の値を 4 に設定し
、grass.animation.frames の値を 2 に設定する必要があります。

n オブジェクトのプロパティの数をカウントするには _size() を使用できることを理解していますが、オブジェクト内の各名前を繰り返し処理し、animation.speed 値が存在する場合はどのように設定すればよいでしょうか。このオブジェクトも動的であるため、任意の数の名前を含めることができます。

助けてくれてありがとう、答えはunderscore.jsの使い方について正しい方向に私をキックスタートさせます.

注:CoffeeScriptを使用しています

4

1 に答える 1

6

CSではなくJSですが、

_.each(obj.name,function(val){
    if('animation' in val && 'frames' in val.animation) {
        val.animation.frames = _.size(val.frames);
    }
});
于 2013-02-16T03:44:46.213 に答える