首页 > 解决方案 > 从 React 数组中过滤过期卡片

问题描述

我有以下扭曲的情况,需要一些指导。这是代码

下面这个函数是用来检测信用卡是否过期的。true如果卡已过期且false卡有效,此函数返回布尔值

const isCardExpired = (mm, yy) => {
  const month = parseInt(mm, 10);
  const year = parseInt(yy, 10);
  const date = new Date();
  const currentYear = parseInt(
    date
      .getFullYear()
      .toString()
      .substr(-2),
    10
  );
  const currentMonth = date.getMonth() + 1;
  console.log(month, year, date, currentYear, currentMonth);
  if (year < currentYear) {
    return true;
  }

  if (month > 12 || (year === currentYear && month < currentMonth)) {
    return true;
  }
  return false;
};

这是我PaymentMethods的长度数组3。它可能会有所不同,这就是为什么我必须循环播放它。

(3) [PaymentMethod, PaymentMethod, PaymentMethod]
0: PaymentMethod
data:
    cardLast4Digits: "1111"
    cardType: "CREDIT"
    expiryMonth: "2"
    expiryYear: "19"

1: PaymentMethod
data:
    cardLast4Digits: "6144"
    cardType: "DEBIT"
    expiryMonth: "12"
    expiryYear: "24
2: PaymentMethod
data:
    cardLast4Digits: "6949"
    cardType: "VISA"
    expiryMonth: "12"
    expiryYear: "25"
length: 3

这是我需要做的,我需要遍历所有 3 种付款方式,并且只拿起cardType: "CREDIT并检查卡是否已使用上述isCardExpired功能过期。yymm这个功能基本上expiryMonthexpiryYearPaymentMethods

一旦找到cardType: CREDIT,它将检查卡是否过期,如果过期,它将从paymentMethods数组中删除该支付方式并将其分配给不同的数组。

例如,如果有 2 张过期的信用卡,则应将其从PaymentMethods数组中删除并将其推送到另一个数组,该数组将列出这 2 张过期的信用卡。

有人可以解释一下这个困难吗?

标签: javascriptarraysreactjsloopsobject

解决方案


试试这个:

const expiredCards = paymentMethods.filter(c => c.data.cardType === "CREDIT" && isCardExpired(c.data.expiryMonth, c.data.expiryYear));
paymentMethods= paymentMethods.filter(c => c.data.cardType !== "CREDIT" || !isCardExpired(c.data.expiryMonth, c.data.expiryYear));

推荐阅读