首页 > 解决方案 > 如何使用每个数据集中的值对我的数据进行不同格式的分类?使用 IF 语句或 Filter()?请看说明

问题描述

目前,下面的数据正在返回payments, pending, 和inactive在代码的末尾,如图所示。如您所见,每个数据集都返回不同的值。我想重组我返回数据的方式type

因此,例如,当type等于“发票”或“免费”或“一次性”时,它会将其归类为Once,当数据type等于时,将Semester其归类为Recurring

type是一个字符串,输出为type“学期”、“发票”、“一次性”和“免费”。

所以简而言之,我想尝试得到这样的东西

{
  "once": {
    "payments": [...],
    "pending": [...],
    "inactive": [...]
  },
  "recurring": {
    "payments": [...],
    "pending": [...],
    "inactive": [...]
  }  
}

我试图创建一个这样的函数并通过过滤器,但它没有用。关于如何编写代码的任何建议?

这是我尝试过的。也是order查询的一部分,所以这是可行的,我只是不发布其余的代码,所以它不会变得混乱。我在paymentsResults[i].filter() 说它不起作用时遇到了错误。无论如何,如果有更好的写法,请告诉我。欣赏它。

 const getCatType = order => {
  if (
    order.type === "Invoice" ||
    order.type === "One-time" ||
    order.type === "Free"

  ) {
    return "Once";
  } else if (order.type === "Semester") {
    return "Recurring";
  }
};

for (let i = 0; i < paymentsResults.length; i++) {
const paymentsOnce = paymentsResults[i].filter(o => getCatType(o) === "Once");
} 

这是下面的主要代码

  const query = await pool.query(q);

    const payments = query.rows.filter(o => getCategory(o) === "payment");
    const pending = query.rows.filter(o => getCategory(o) === "pending");
    const inactive = query.rows.filter(o => getCategory(o) === "inactive");

   const paymentsResults = await Promise.all(
      payments.map(async order => {
        return {
          date: getDate(order),
          item: await getItem(order),
          total: getTotal(order),
          purchaser: getPurchaser(order),
          email: getEmail(order),
          paymentMethod: getPaidUsing(order),
          status: getStatus(order),
          type: getType(order),
          deposit: getJustDeposit(order)
        };
      })
    );

    const pendingResults = await Promise.all(
      pending.map(async order => {
        return {
          date: getDate(order),
          item: await getItem(order),
          total: getTotal(order),
          purchaser: getPurchaser(order),
          email: getEmail(order),
          status: getStatus(order),
          type: getType(order),
          deposit: getJustDeposit(order)
        };
      })
    );

  return {
  payments: paymentsResults,
  pending: pendingResults,
  inactive: inactive
};

标签: javascriptnode.js

解决方案


推荐阅读