Javascript normalizer转换模式故障
如何转换一些json数组Javascript normalizer转换模式故障,javascript,reactjs,redux,schema,normalizr,Javascript,Reactjs,Redux,Schema,Normalizr,如何转换一些json数组 [ { "travelExpenseId":11, "tripId":2, "paymentPurpose":"some payment purpose 2", "receiptNumber":"EF12312_2", "receiptDate":"2018-09-30T00:00:00", "receiptPrice":107000.0, "receiptCurrency":"р
[
{
"travelExpenseId":11,
"tripId":2,
"paymentPurpose":"some payment purpose 2",
"receiptNumber":"EF12312_2",
"receiptDate":"2018-09-30T00:00:00",
"receiptPrice":107000.0,
"receiptCurrency":"руб."
},
{
"travelExpenseId":10,
"tripId":2,
"paymentPurpose":"some payment purpose 1",
"receiptNumber":"EF12312_1",
"receiptDate":"2018-09-30T00:00:00",
"receiptPrice":107000.0,
"receiptCurrency":"руб."
}
]
通过travelExpenseId快速获取费用和通过tripId获取费用
现在我使用这样的方法:
export const expenseSchema = new schema.Entity('expenses', {}, { idAttribute: 'travelExpenseId' });
export const expensesListSchema = [expenseSchema];
并得到结果:
data: {
entities: {
expenses: {
'10': {
travelExpenseId: 10,
tripId: 2,
paymentPurpose: 'some payment purpose 1',
receiptNumber: 'EF12312_1',
receiptDate: '2018-09-30T00:00:00',
receiptPrice: 107000,
receiptCurrency: 'руб.'
},
'11': {
travelExpenseId: 11,
tripId: 2,
paymentPurpose: 'some payment purpose 2',
receiptNumber: 'EF12312_2',
receiptDate: '2018-09-30T00:00:00',
receiptPrice: 107000,
receiptCurrency: 'руб.'
}
}
},
result: [
11,
10
]
}
我想向data.entities添加额外的schemaexpensesByTripId
,所以结果应该类似于此:
data: {
entities: {
expensesByTripId: {
'2': [10, 11],
},
expenses: {
'10': {
travelExpenseId: 10,
tripId: 2,
paymentPurpose: 'some payment purpose 1',
receiptNumber: 'EF12312_1',
receiptDate: '2018-09-30T00:00:00',
receiptPrice: 107000,
receiptCurrency: 'руб.'
},
'11': {
travelExpenseId: 11,
tripId: 2,
paymentPurpose: 'some payment purpose 2',
receiptNumber: 'EF12312_2',
receiptDate: '2018-09-30T00:00:00',
receiptPrice: 107000,
receiptCurrency: 'руб.'
}
}
},
result: [
11,
10
]
}
或者为我提供任何适合我的情况的其他方式
let数据={
实体:{
费用:{
'10': {
travelExpenseId:10,
tripId:2,
paymentPurpose:“某些支付目的1”,
收件编号:“EF12312_1”,
接收日期:“2018-09-30T00:00:00”,
收款价格:107000,
收货货币:'Сбб。'
},
'11': {
travelExpenseId:11,
tripId:2,
paymentPurpose:“某些支付目的2”,
收件编号:“EF12312_2”,
接收日期:“2018-09-30T00:00:00”,
收款价格:107000,
收货货币:'Сбб。'
}
}
},
结果:[
11,
10
]
}
让对象={};
Object.values(data.entities.expenses).forEach(expenses=>{
让结果=对象[expenses.tripId]| |[];
对象[expenses.tripId]=[…结果,expenses.travelExpenseId];
});
数据实体[“expensesByTripId”]=对象;
控制台日志(数据);