0

ノード構造と配列構造を維持しながら、さまざまなレベルで指定するいくつかのプロパティを除いて、JSONからすべてをトリミングするにはどうすればよいですか?

Underscore.jsを調べたところ、ノード構造を維持するためのきめ細かい制御があまり行われていないようです。'_id', 'revisions[0]._id', 'revisions[0]._clientHasViewed'以下の例では、理想的には、これらのプロパティを保持するための引数として指定できるようにしたいと思います。

確かにこれを行う簡単な方法があります。これが私が探しているものです:

オリジナル

{
    "_id": "50cbf5214ffaee8f0400000a",
    "_user": "50b1a966c12ef0c426000007",
    "expenses": [],
    "name": "Untitled Project",
    "payments": [],
    "revisions": [
        {
            "_id": "50cbfae65c9d160506000007",
            "clientHasViewed": false,
            "comments": [],
            "dateCreated": "2012-12-15T04:21:58.605Z"
        },
        {
            "_id": "50cbfae65c9d160506000008",
            "clientHasViewed": false,
            "comments": [],
            "dateCreated": "2012-12-15T04:21:58.605Z"
        }
    ],
    "status": "Revised",
    "thumbURL": "/50cd3107845d90ab28000007/thumb.jpg"
}

トリミング

{
    "_id": "50cbf5214ffaee8f0400000a",
    "revisions": [
        {
            "_id": "50cbfae65c9d160506000007",
            "clientHasViewed": false,
        },
    ],
}
4

1 に答える 1

1

ExtJsにはcopyTo関数(1レベルのみ)がありますが、AngularJsと同様のものを作成できます(angularにはangular.copyがありますが、オブジェクト全体をコピーします)。

var copyTo = function(dest, source, names){
    names = names.split(/[,;\s]/);

    angular.forEach(names, function(name){
        if(source.hasOwnProperty(name)){
             dest[name] = source[name];
         }
     });
     return dest;
};

例えば

var trimmed = copyTo({}, original, '_id,');
    trimmed.revisions = [{}];
    trimmed = copyTo(trimmed.revisions[0], original.revisions[0], '_id,_clientHasViewed,'); 
于 2012-12-28T22:34:55.727 に答える