2

たとえば、次のオブジェクト マップがあるとします。

{
    "key1" : { data: "data1", extra: "none" },
    "key2" : { data: "data2", extra: "none" },
    "key3" : { data: "data3", extra: "none" },
    "key4" : { data: "data4", extra: "none" }, 
};

次のような多次元配列に変換する便利な方法はありますか:

[
    [ "key1" , { data: "data1", extra: "none" } ],
    [ "key2" , { data: "data2", extra: "none" } ],
    [ "key3" , { data: "data3", extra: "none" } ],
    [ "key4" , { data: "data4", extra: "none" } ], 
];

配列を必要とする関数がありますが、サードパーティのプラグインから受け取ったデータはオブジェクト配列になっています。2 つの間で変換を行う簡単な方法があればいいのですが。

4

3 に答える 3

5

この機能を試してください:

function convert(original) {
    var multiArray = [];
    for(var key in original) { multiArray.push([ key, original[key] ]); }
    return multiArray;
}

デモフィドルを参照してください。

次のように使用します。

var myObject = {
    "key1" : { data: "data1", extra: "none" },
    "key2" : { data: "data2", extra: "none" },
    "key3" : { data: "data3", extra: "none" },
    "key4" : { data: "data4", extra: "none" }, 
};
var myMultiArray = convert(myObject);
于 2013-05-18T06:30:46.457 に答える
3

ES6 では、簡単[[e, o[e]] for (e in o)]です。

于 2013-05-18T16:22:21.877 に答える
3

以下のようなヘルパー関数を作成する場合pair、標準のキー/マップで十分です:

Object.keys(m).map(pair.bind(m))
function pair(x){return [x, this[x]]}
于 2013-05-18T06:39:05.167 に答える