JSON配列を2つのプロパティ(nameとaddress2)でグループ化して、それを減らしたいとします。ここでは、現在のJSONです:lodashを使用して複数のグループを適用する
{
"clientId": "FOO",
"name": "John Doe",
"address1": "London",
"address2": "1 High Street",
"invoiceNumber": "1234",
"itemDescription": "Item 1",
"itemQuantity": 1
},
{
"clientId": "BAR",
"name": "John Doe",
"address1": "London",
"address2": "1 Oxford Street",
"invoiceNumber": "0987",
"itemDescription": "Item 2",
"itemQuantity": 1
},
{
"clientId": "FOO",
"name": "John Doe",
"address1": "London",
"address2": "1 High Street",
"invoiceNumber": "5678",
"itemDescription": "Item 3",
"itemQuantity": 1
}
これは私が達成したいものです。
[
{
"clientId": "FOO",
"name": "John Doe",
"address1": "London",
"address2": "1 High Street",
"deliveries": [
{
"invoiceNumber": "1234",
"itemQuantity": 1,
"itemDescription": "Item 1"
},
{
"invoiceNumber": "5678",
"itemDescription": "Item3",
"itemQuantity": 1
}
]
},
{
"clientId": "BAR",
"name": "JohnDoe",
"address1": "London",
"address2": "12 Oxford Street",
"deliveries": [
{
"invoiceNumber": "0987",
"itemDescription": "Item2",
"itemQuantity": 1
}
]
}
]
そして、ここでは、私はそれを望んでいるだろうものを生成しません、私がこれまで持っているコードは、あります希望:
var groups = _.groupBy(rows, function(value) {
return value.name + '#' + value.address2;
});
var data = _.map(groups, function(group) {
return {
clientId: group[0].clientId,
name: group[0].name,
address1: group[0].address1,
address2: group[0].address2,
deliveries: [{
invoiceNumber: _.map(group,'invoiceNumber'),
itemDescription: _.map(group,'itemDescription'),
itemQuantity: _.map(group,'itemQuantity'),
}]
}
});
そして、それは次のように出力生成:
[ { clientId: 'FOO',
name: 'John Doe',
address1: 'London',
address2: '1 High Street',
deliveries: [ [Object] ] } ]
を
lodash _map関数内に "配送"オブジェクトの配列を作成する方法がわかりません。助けてください! :)
あなたのコードだけではconsole.logプリントを働くかもしれない:あなたが使用Lodash機能の詳細情報を希望する場合は、ここでそれらのための公式ドキュメントです'[オブジェクト]'。 console.log(client.deliveris)にログを変更して何か変更があるか確認してください。 – Meir
@Meir - 動作しません。配信内に配列が作成されるため、invoiceNumberは['1234'、 '5678']などになります。私は、これを達成するためには、forEachをそれぞれ繰り返し実行し、元の配列とマージされる個別の配送オブジェクトを作成しましたが、確かにより良い解決策が必要です。 – problematic
[オブジェクト]の内容を知りたい場合。これを行う: 'var util = require( 'util'); –