我在 Angular JS 中創建了這個服務方法,它檢查潛在狀態陣列(pendingApplications)是否匹配任何一組設定狀態(applicableStatuses)。為此,在第一次匹配發生后, meetStatusCondition 應該回傳 true。pendingApplications 陣列中只有 1 個數字需要匹配,我想結束此函式的執行。目前它正在遍歷 pendingApplications 陣列中的每個專案
`containsApplicableStatus: function(pendingApplications, applicableStatuses) {
pendingApplications.forEach(function(status) {
if (applicableStatuses.includes(status)) {
return pendingApplications.meetsStatusCondition = true;
}
});
}`
uj5u.com熱心網友回復:
這是一個限制.forEach,如果你可以使用 for 回圈,你就不能突破
只需一個常規的 for 回圈即可
for (const status of applicableStatuses){
if (applicableStatuses.includes(status)) {
pendingApplications.meetsStatusCondition = true;
break //or return if you want to exit out of the enclosing function instead of just the loop
}
}
uj5u.com熱心網友回復:
通常,當您想像這樣短路 a 時forEach,您真正要尋找的是另一種方法,例如find()or some()。
containsApplicableStatus: function(pendingApplications, applicableStatuses) {
pendingApplications.meetsStatusCondition = pendingApplications.some(function(status) {
return applicableStatuses.includes(status)
});
}
uj5u.com熱心網友回復:
如果您可以只使用常規回圈,那么使用forEach(沒有中斷選項)是沒有意義的:for ... of
containsApplicableStatus: function(pendingApplications, applicableStatuses) {
for (const status of pendingApplications) {
if (applicableStatuses.includes(status)) {
pendingApplications.meetsStatusCondition = true;
break;
}
}
}
但是,即使這看起來有點過于復雜,您也可以meetsStatusCondition將結果設定為some:
containsApplicableStatus: function(pendingApplications, applicableStatuses) {
pendingApplications.meetsStatusCondition =
pendingApplications.some(status => applicableStatues.includes(status));
}
我確實想知道在你的陣列上設定一個非索引屬性是否有意義,也許重新考慮一下。這行得通,但它通常不是您期望的陣列,例如,如果您將該陣列轉換為 JSON,它將丟失。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/429399.html
下一篇:使用遞回計算Div和Mod
