3

1つのタイプのJavaScriptオブジェクトを変換する必要があります。

object1: [{"a":"value1", "b":"value2", "c":"value3"}, {"d":"value4","e":"value5","f":"value6"}] 

別のタイプのオブジェクトへ:

object2 : {"value1":["value1", "value2", "value3"], "value4":["value4","value5","value6"]}

この関数を使用して変換しようとしました:

function toObject(arr) {
   var rv = {};
   for (var i = 0; i < arr.length; ++i) {
      rv[i] = arr[i];
   }
   return rv;
}

しかし、「value1」と「value4」の代わりに数値インデックス([0]、[1])を取得しています。object1からobject2への変換方法のヒントを教えてください。ありがとう。

4

1 に答える 1

2

あなたが望むのは、ベクトルの囚人を連結することですか?

試す:

function toObject(arr) {
   var rv = {}, k;
   for (var i = 0; i < arr.length; ++i) {
     for(k in arr[i]){
       rv[k] = arr[i][k];
     }
   }
   return rv;
}

これがあなたが探しているものではない場合は、これを試してください: [修正済み(user @ user1689607の助けを借りて)]

[編集]

Object.keys古いブラウザでは動作しません。[修理済み]

function toObject(arr,_sort) {
    //param1 = Object, param2 = (true:sort, false:default)
    var rv = {}, k, firstV = null, keys, obj, tmp, j,
       ObjK = Object.keys ? function(ke){
            return Object.keys(ke);
       } : function(ke){
            var r = [];
            for(var o in ke){
                r[r.length] = o;
            }
            return r;
       };

    for (var i = 0; i < arr.length; ++i) {
        obj = arr[i];
        tmp = [];
        keys = _sort===true ? ObjK(obj).sort() : ObjK(obj);
        tmp = [obj[keys[0]]];
        for (j = 0; j < keys.length; ++j) {
            tmp[tmp.length] = obj[keys[j]];
        }
        rv[obj[keys[0]]] = tmp;
        firstV = null;
    }
    return rv;
}

//sort
console.log(
    toObject([{"a":"value1", "b":"value2", "c":"value3"}, {"d":"value4","e":"value5","f":"value6"}]),
true);

//default
console.log(
    toObject([{"a":"value1", "b":"value2", "c":"value3"}, {"d":"value4","e":"value5","f":"value6"}])
);
于 2012-11-26T20:53:47.777 に答える