我想通過兩個屬性(名稱和地址2)對JSON數組進行分組,然後將其減少。這是當前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 '[對象]'。嘗試將日誌更改爲console.log(client.deliveris)並查看它是否更改了任何內容 – Meir
@Meir - 它不起作用,它在交付內創建數組,因此invoiceNumber變爲['1234','5678']等。我知道我可以通過運行額外的forEach來遍歷每個對象,並構建一個將與原始數組合並的獨立交付對象,但肯定必須有更好的解決方案。 – problematic
如果您想知道[對象]中的內容。這樣做:'var util = require('util'); console.log(util.inspect(data,{showHidden:false,depth:null}));' –