2017-10-23 14 views
-6

この配列を別の配列に変換したいのですが、lodash 2.4.2:配列を別の配列に変換する

権限がロールにマップされます。他のプロパティには触れません。

:この配列

{ 

    "items": [ 
     { 
      "_id": "admin", 
      "roles": [ 

       "ROLE_ADMIN" 

      ] 
     }, 
     { 
      "_id": "user", 
      "role": [ 

       "ROLE_USER" 

      ] 
     } 
     ] 
    } 

 { 

     "items": [ 
     { 
      "_id": "admin", 
      "authorities": [ 
      { 
       "name": "ROLE_ADMIN" 
      } 
      ] 
     }, 
     { 
      "_id": "user", 
      "authorities": [ 
      { 
       "name": "ROLE_USER" 
      } 
      ] 
     } 
     ] 
    } 

あなたは私に助けてくださいことができますか?

+0

これまでに試したことはありますか? – evolutionxbox

+4

Stackoverflowは無料のコード作成サービスではありません。あなたが試したことを示してください。ここの目的は**あなたのコード**を修正するのを助けることです** – charlietfl

答えて

0

charlietflとして、今後の投稿では、問題を解決するために書いたコード例を提示する必要があります。ここで

が解決策だ、それはかなり簡単です:

const initialObject = { 
    "items": [ 
    { 
     "_id": "admin", 
     "authorities": [ 
     { 
      "name": "ROLE_ADMIN" 
     } 
     ] 
    }, 
    { 
     "_id": "user", 
     "authorities": [ 
     { 
      "name": "ROLE_USER" 
     } 
     ] 
    } 
    ] 
} 

const processedObject = _ 
    .map(initialObject.items, item => { 
    return { 
     _id: item._id, 
     roles: _.map(item.authorities, a => a.name) 
    } 
    }) 
0

それは、キー名の単なる再マッピングです。パフォーマンス上の理由から、私はdeleteの使用を避けようとします。このbenchmarkのパフォーマンスの違いを見ることができますが、オブジェクトが後で持続される場合にのみ 'delete'を使用してください。

for (var item of items) { 
    item.roles = item.authorities 
    // possible but slow 
    // delete item.authorities 
    item.authorities = undefined 
} 

編集:@vanelizarovコードは、オブジェクト自体の変異やクリーンなプロパティを避けたい場合にはさらに優れています。しかしそれはまた遅いです。

vanelizarov code: x 5,025,370 ops/sec ±1.30% (90 runs sampled) 
my code:   x 31,583,811 ops/sec ±0.95% (92 runs sampled) 
関連する問題