2017-03-09 16 views
1

オブジェクトのリスト内の特定のキーのすべての要素を変換しようとしています。具体的な変更は、同じ値を持つobjectオブジェクトをLongオブジェクトに変換することです。オブジェクトの配列内の単一要素を変換する

入力:各オブジェクトがどのように見えるどこ

[obj1, obj2, obj3, ...] 

{ 
    key1: value1, // value1 is an object 
    key2: value2 
} 

ので、ここでの目標は非常によく似た配列を取得することですが、key1longオブジェクトにだけobjectから変換された場合私の例では1つ増えています。

出力:

[obj1, obj2, obj3] 

各オブジェクトは次のとおりです。私は、配列の上にマッピングしてみました、その後、オブジェクトのエントリに広がったが、成功しなかった

{ 
    key1: value1, // value1 is now a Long object 
    key2: value2 
} 

ご協力いただければ幸いです。

+1

実際に試したコードは、質問の一部でなければなりません。 – Pointy

+0

は非常に単純なマップでなければなりません。何を試しましたか? –

+0

あなたが試したコードの横に、希望の結果が表示された実際の例を追加してください。 –

答えて

0

感謝。

は、私は次のようになってしまった:

入力を考えると

[ 
    { 
     key1: value1, // value1 is an object 
     key2: value2 
    }, 

    { 
     key1: value1, // value1 is also an object 
     key2: value2 
    } 
] 

ソリューション:私は終わった 、出力を与える

const testvar = [obj1, obj2, obj3].map((obj) => { 
    return { 
     ...obj, 
     key1: new Long.fromValue(obj.key1) 
    } 
    }); 

    console.log(testvar); 

[ 
    { 
     key1: value1, // value1 is now a Long object 
     key2: value2 
    }, 

    { 
     key1: value1, // value1 is also now a Long object 
     key2: value2 
    } 
] 
1

もう1つの新しい配列を作成しない限り、実際にここにマップする必要はありません。渡される実入力を反映するオブジェクトへの変更を - 配列オブジェクトを保持しているので

[obj1, obj2, obj3].forEach(obj => { 
    obj.key1 = obj.key1 + 1 
}) 
0

:単純なループは、ちょうどkey1または各オブジェクトを更新し、十分だろう。オブジェクトのコピーを作成し、ロジックを実行する必要があります。

あなたのロジック、

var input = [obj1, obj2, obj3]; 
var output = input.map(function(obj){ 
    obj.key1 = obj.key1 + 1; 
    return obj; 
}); 

console.log(input[0]===output[0]); //true 

ソリューション:

var output = input.map(function(obj){ 
    var _objCopy = Object.assign({}, obj); 
    _objCopy.key1 = _objCopy.key1 + 1; 
    return _objCopy; 
}); 

console.log(input[0]===output[0]); //false 
0

どのように任意のオブジェクトES6の道の動的に最初のキーに関するすべての答えの男性のための

const myObject0 = { 
      'foo1': { name: 'myNam1' }, 
      'foo2': { name: 'myNam2' } 
     }; 

     const myObject1 = { 
      'yo': { name: 'myNam1' }, 
      'boh': { name: 'myNam2' } 
     }; 


     [myObject0, myObject1].forEach(obj => { 
      let getFirstKey = Object.keys(obj)[0]; 
      getFirstKey = getFirstKey + 1; 
      console.log(getFirstKey); 

     }); 
関連する問題