javascript - 从 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
功能过期。yy
而mm
这个功能基本上expiryMonth
是expiryYear
从PaymentMethods
一旦找到cardType: CREDIT
,它将检查卡是否过期,如果过期,它将从paymentMethods
数组中删除该支付方式并将其分配给不同的数组。
例如,如果有 2 张过期的信用卡,则应将其从PaymentMethods
数组中删除并将其推送到另一个数组,该数组将列出这 2 张过期的信用卡。
有人可以解释一下这个困难吗?
解决方案
试试这个:
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));