Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript normalizer转换模式故障_Javascript_Reactjs_Redux_Schema_Normalizr - Fatal编程技术网

Javascript normalizer转换模式故障

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":"р

如何转换一些json数组

[
   {
      "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添加额外的schema
expensesByTripId
,所以结果应该类似于此:

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”]=对象;
控制台日志(数据);