首页 > 解决方案 > 在javascript中格式化对象

问题描述

我的应用程序是 react 和 redux 技术。

我创建了一个帮助器来格式化我的帐户账单和资金,如下所示:

export const formatBill = (bill) => ({
  ...bill,
  amountMoney: bill.amountMoney?.toLocaleString(undefined, {
    minimumFractionDigits: 2,
  }),
  accountBillNumber: bill.accountBillNumber
    .replace(/(^\d{2}|\d{4})+?/g, '$1 ')
    .trim(),
});

多亏了这一点,我可以在 redux reducer 中做一些事情,并且效果很好:

...
case GET_BILLS_SUCCESS:
  draft.bills = action.bills.map(formatBill);
  break;
...

现在我有一个问题,因为我想用这个函数来记录转账历史。问题是我的有效载荷看起来不那么友好。它类似于:

transactions: {
      data: [
        {
          amountMoney: '10.00',
          recipientBill: {
            uuid: '8b9cef86-3987-4a71-badc-996caca8d8e0',
            accountBillNumber: '19282292972339385206612752',
            currency: {
              name: 'PLN',
            },
            user: {
              uuid: 'c58a9b81-2d16-4b07-804d-0b1fc34381ed',
            }
          },
          senderBill: {
            uuid: '6308be25-5bde-4f63-83d1-7bd47a829e61',
            accountBillNumber: '76282292974456140174811708',
            currency: {
              name: 'USD',
            },
            user: {
              uuid: 'af031321-f64b-4e91-948b-0c8c8ac4804c',
            }
          }
        }
      ],
      meta: {
        page: 1,
        take: 10,
        itemCount: 1,
        pageCount: 1
      }
    };

所以现在我想formatBill()付账recipientBill.accountBillNumbersenderBill.accountBillNumber我怎样才能很好地把它保存在 redux reducer 中?我试图解决与此类似的问题,但这不是正确的解决方案:

case GET_TRANSACTION_HISTORY_SUCCESS:
  draft.transactions.data = [
    action.transactions.data.map((transaction) =>
      formatBill(transaction.recipientBill),
    ),
    action.transactions.meta,
  ];

  break;

标签: javascriptreactjsredux

解决方案


推荐阅读