2

複雑な json オブジェクトを再帰的に検索し、「_」で始まるキーに関連付けられたオブジェクトを削除する必要があります。

これまでのところ、私は持っています:

sanitize: function(json){
    for(var i in json){
        if(json[i]){
            if(i.substring(0,1) == "_")
                delete json[i];
            else
                this.sanitize(json[i]);
        }
    }
    console.log(json);
    return json;
}

最大コール スタックを超えています。

4

1 に答える 1

1

独自の配列を使用してみてください。また、サブオブジェクトが循環参照ではないことを確認し、それらがオブジェクトであることも確認してください。

function sanitize(json) {
    var stack = [];
    var done = [];

    do {
        for(var x in json) {
            if(x.charAt(0) === '_') {
                delete json[x];
            } else if(done.indexOf(json[x]) === -1 && typeof json[x] === 'object') {
                stack.push(json[x]);
                done.push(json[x]);
            }
        }
    } while(json = stack.pop());
}
于 2012-04-16T19:16:20.743 に答える