const priceType = ['monthly', 'annual'];
var discounts =[
{product: "A", monthlyDiscount : 15.0, monthlyMaxDiscount: 30.0, annualDiscount : 25.0, annualMaxDiscount : 20.0},
{product: "B", monthlyDiscount : 5.0, monthlyMaxDiscount: 20.0, annualDiscount : 40.0, annualMaxDiscount : 30.0}
]
var exceedsDiscount;
如果我的任何折扣物件超過最大折扣,我需要將布林值設定為 true 并停止檢查其他陣列專案。
我使用了 for 回圈,這按預期作業:
exceedsDiscount = false;
angular.forEach(priceType, function(type){
angular.forEach(discounts, function(discount){
if(discount[`${type}Discount`] > discount[`${type}MaxDiscount`]){
exceedsDiscount = true;
return;
}
});
如果我嘗試使用 every 和 some 箭頭函式,結果是不一樣的。它隨機給出真偽。知道如何在不使用兩個 for 回圈的情況下使用嗎?
exceedsDiscount = false;
exceedsDiscount = priceType.every(type => discounts.some(discount =>{return discount[`${type}Discount`] > discount[`${type}MaxDiscount`];}));
uj5u.com熱心網友回復:
正如trincot在評論中指出的那樣.every(.... .some(...)),如果使用.some(... .some(...))- 而不是 ,則獲得所需的結果。
我們'some .. some'指的是存在“some”型別的場景,其中存在大于 maxDiscount 的“some”折扣。
片段如下:
const priceType = ['monthly', 'annual'];
var discounts = [{
product: "A",
monthlyDiscount: 15.0,
monthlyMaxDiscount: 30.0,
annualDiscount: 25.0,
annualMaxDiscount: 20.0
},
{
product: "B",
monthlyDiscount: 5.0,
monthlyMaxDiscount: 20.0,
annualDiscount: 40.0,
annualMaxDiscount: 30.0
}
];
const everySome = priceType.every(type => discounts.some(discount =>{return discount[`${type}Discount`] > discount[`${type}MaxDiscount`];}));;
const someSome = priceType.some(type => discounts.some(discount =>{return discount[`${type}Discount`] > discount[`${type}MaxDiscount`];}));
console.log(
'\n.every(.. .some( returns: ', JSON.stringify(everySome),
'\n.some(.. .some( returns: ', JSON.stringify(someSome)
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/487210.html
上一篇:導致無法讀取未定義的屬性
