2016-05-30 5 views
0

を使用して、配列の配列をフォーマットする方法:私はグループに次のようになりますプロパティ「isRouteId」で配列lodashを使用していますlodash

[ 
    [ 
     { 
      "key": 0, 
      "isSurveyId": null, 
      "isPausedId": null, 
      "isRouteId": "7778a8b2-2a92-49f3-b910-089231678412", 
      "isPaused": false, 
      "subdivisionId": 0, 
      "latlngObj": { 
       "latitude": 29.5407882, 
       "longitude": -95.7732222 
      } 
     }, 
     { 
      "key": 1, 
      "isSurveyId": null, 
      "isPausedId": null, 
      "isRouteId": "7778a8b2-2a92-49f3-b910-089231678412", 
      "isPaused": false, 
      "subdivisionId": 0, 
      "latlngObj": { 
       "latitude": 29.5406792, 
       "longitude": -95.7732779 
      } 
     } 
    ], 
    [ 
     { 
      "key": 71, 
      "isSurveyId": null, 
      "isPausedId": null, 
      "isRouteId": "ddb42ef3-6c0e-48fc-9bcb-0a64ad422db4", 
      "isPaused": false, 
      "subdivisionId": 0, 
      "latlngObj": { 
       "latitude": 29.5332458, 
       "longitude": -95.7766514 
      } 
     }, 
     { 
      "key": 72, 
      "isSurveyId": null, 
      "isPausedId": null, 
      "isRouteId": "ddb42ef3-6c0e-48fc-9bcb-0a64ad422db4", 
      "isPaused": false, 
      "subdivisionId": 0, 
      "latlngObj": { 
       "latitude": 29.5331976, 
       "longitude": -95.7765264 
      } 
     }, 
     { 
      "key": 73, 
      "isSurveyId": null, 
      "isPausedId": null, 
      "isRouteId": "ddb42ef3-6c0e-48fc-9bcb-0a64ad422db4", 
      "isPaused": false, 
      "subdivisionId": 0, 
      "latlngObj": { 
       "latitude": 29.5331486, 
       "longitude": -95.7763998 
      } 
     } 
    ], 
    [ 
     { 
      "key": 93, 
      "isSurveyId": null, 
      "isPausedId": null, 
      "isRouteId": "7a343973-95b4-4508-9076-15a6ebae5555", 
      "isPaused": false, 
      "subdivisionId": 0, 
      "latlngObj": { 
       "latitude": 29.5321796, 
       "longitude": -95.7738858 
      } 
     }, 
     { 
      "key": 94, 
      "isSurveyId": null, 
      "isPausedId": null, 
      "isRouteId": "7a343973-95b4-4508-9076-15a6ebae5555", 
      "isPaused": false, 
      "subdivisionId": 0, 
      "latlngObj": { 
       "latitude": 29.5321292, 
       "longitude": -95.7737588 
      } 
     } 
    ] 
] 

私は、ネストされたを取ることです次のステップで助けを必要とします"latlngObj"プロパティを作成し、ルートレベルに移動します。 所望の結果はこのように見える必要がある:

[ 
    [ 
     { 
      "key": 0, 
      "isSurveyId": null, 
      "isPausedId": null, 
      "isRouteId": "7778a8b2-2a92-49f3-b910-089231678412", 
      "isPaused": false, 
      "subdivisionId": 0, 
      "latitude": 29.5407882, 
      "longitude": -95.7732222 
     }, 
     { 
      "key": 1, 
      "isSurveyId": null, 
      "isPausedId": null, 
      "isRouteId": "7778a8b2-2a92-49f3-b910-089231678412", 
      "isPaused": false, 
      "subdivisionId": 0, 
      "latitude": 29.5406792, 
      "longitude": -95.7732779 
     } 
    ], 
    [ 
     { 
      "key": 71, 
      "isSurveyId": null, 
      "isPausedId": null, 
      "isRouteId": "ddb42ef3-6c0e-48fc-9bcb-0a64ad422db4", 
      "isPaused": false, 
      "subdivisionId": 0, 
      "latitude": 29.5332458, 
      "longitude": -95.7766514 
     }, 
     { 
      "key": 72, 
      "isSurveyId": null, 
      "isPausedId": null, 
      "isRouteId": "ddb42ef3-6c0e-48fc-9bcb-0a64ad422db4", 
      "isPaused": false, 
      "subdivisionId": 0, 
      "latitude": 29.5331976, 
      "longitude": -95.7765264 
     }, 
     { 
      "key": 73, 
      "isSurveyId": null, 
      "isPausedId": null, 
      "isRouteId": "ddb42ef3-6c0e-48fc-9bcb-0a64ad422db4", 
      "isPaused": false, 
      "subdivisionId": 0, 
      "latitude": 29.5331486, 
      "longitude": -95.7763998 
     } 
    ], 
    [ 
     { 
      "key": 93, 
      "isSurveyId": null, 
      "isPausedId": null, 
      "isRouteId": "7a343973-95b4-4508-9076-15a6ebae5555", 
      "isPaused": false, 
      "subdivisionId": 0, 
      "latitude": 29.5321796, 
      "longitude": -95.7738858 
     }, 
     { 
      "key": 94, 
      "isSurveyId": null, 
      "isPausedId": null, 
      "isRouteId": "7a343973-95b4-4508-9076-15a6ebae5555", 
      "isPaused": false, 
      "subdivisionId": 0, 
      "latitude": 29.5321292, 
      "longitude": -95.7737588 
     } 
    ] 
] 

私はjqueryのを使用してそれを行う方法を知っているが、それは利用できません。これを達成するには、ロダッシュ、アンダースコア、またはJavaScriptを使用する必要があります。

plunker

var result = _(routesById).groupBy('isRouteId').values().value(); 

console.log(result); 

答えて

1

ここだけ、あなたのコレクションの上に一回の反復を必要とするソリューションです。私たちはgroupByキーを返す前に、反復関数groupBy内のすべての作業を行います。

var result = _(routesById).groupBy(function(model) { 
    model.latitude = model.latlngObj.latitude; 
    model.longitude = model.latlngObj.longitude; 
    delete(model.latlngObj); 
    return model.isRouteId; 
}).values().value(); 

Plunker

3

は、私は次のようなアプローチを取る:

_(coll) 
    .flatten() 
    .map(i => _.assign({}, _.omit(i, 'latlngObj'), i.latlngObj)) 
    .groupBy('isRouteId') 
    .value() 

最初のステップは、flatten()に配列され、そうしてすることができますだけmap()アイテムを。考え方は、マップiterateeがlatlngObjプロパティを追加するのにassign()を使用し、を取り除くためにomit()が使用されていることです(必要ならばomit()部分をスキップできます)。

それでは、groupBy()を呼び出してチェーンを終了してください。

関連する問題