【发布时间】:2026-01-01 21:20:03
【问题描述】:
我有以下功能。我正在使用 forEach。我如何在我的函数中使用过滤器而不是使用 forEach。我在网上搜索但找不到实现这一目标的方法。
pendingPaymentsUtils.getPendingPayment = paymentId => {
const payments = pendingPaymentsUtils.getPendingPayments()
let payment = {}
payments.forEach(function(_payment) {
if (_payment.id === paymentId) {
payment = _payment
return false
}
})
return payment
}
我已经尝试了以下方式,但它没有按预期工作。
pendingPaymentsUtils.getPendingPayment = paymentId => {
const payments = pendingPaymentsUtils.getPendingPayments()
let payment = {}
payments.filter(function(_payment) {
payment = _payment
return _payment.id === paymentId ? false: true
})
return payment
}
【问题讨论】:
-
你为重构做了哪些努力?
-
forEach方法有效吗?看起来它只返回与条件匹配的最后一个项目。您要返回所有符合条件的项目还是只返回最后一个? -
我很确定如果您只是将文本“forEach”替换为“filter”,它会产生相同的付款返回值。 forEach 和 filter 为数组中的每个项目运行一次(在您的情况下为付款)。不同之处在于 filter 将返回 filter/forEach 函数中每个返回 true 的值的子集数组,而 forEach 不返回任何内容。
-
@DanielA.White- 谢谢。更新了我的重构代码。
-
@ashwinprabhu 您是否只希望在数组中找到一项?
标签: javascript arrays function object filter