0

以下のような JavaScript 配列オブジェクトがあります。

var Array = [{"foo1":"bar1","foo2":"bar2","foo3":"bar3","foo4":"bar4","foo5":"bar5","foo6":"bar6","foo7":"bar7"},
{"foo1":"bar5","foo2":"bar6","foo3":"bar7","foo4":"bar8","foo5":"bar9","foo6":"bar10","foo7":"bar10"}]

この配列をシリアライズ用のJSON形式の文字列に変換したいのですが、これは次のようになります。私はJSON.stringifyシリアル化に使用しています。これにより、以下のような結果の文字列が得られます。

'"fooAry" : [{"foo1":"bar1","foo2":"bar2","foo3":"bar3","foo4":"bar4"},
{"foo1":"bar5","foo2":"bar6","foo3":"bar7","foo4":"bar8"}]'

ご覧のとおり、ここには次の 2 つがあります。

  1. 配列内のキーと値のペアの最後の 3 つの要素を取り除く
  2. fooAry結果の JSON 文字列にキーを追加します。
4

1 に答える 1

1

オブジェクト内の要素の順序を本当に保証できると仮定します。

var a = [
    {"foo1":"bar1","foo2":"bar2","foo3":"bar3","foo4":"bar4","foo5":"bar5","foo6":"bar6","foo7":"bar7"},
    {"foo1":"bar5","foo2":"bar6","foo3":"bar7","foo4":"bar8","foo5":"bar9","foo6":"bar10","foo7":"bar10"}
];

// Object.keys polyfill
if (!Object.keys) Object.keys = function(o){
    var ret=[], p;
    for (p in o){
        if (Object.prototype.hasOwnProperty.call(o, p)){
            ret.push(p);
        }
    }
    return ret;
}

function removeLast3(obj){   
    var ks = Object.keys(obj).slice(0, -3);
    var newobj = {}, k, i;
    for (i=0; k=ks[i]; i++){
        newobj[k] = obj[k];
    }
    return newobj;
}

var newA = [removeLast3(a[0]), removeLast3(a[1])];
var strA = '"fooAry": ' + JSON.stringify(newA);
于 2013-08-17T23:57:17.893 に答える