[英]How do I add an if , else if, else condition to my arrow function which includes .map and .filter already?
下面是一個 function 需要設置選項數組中選定元素的 option.value。 如果選擇了 3 個或更多選項,則需要將其設置為每個 1.50 美元,如果選擇了 6 個或更多選項,則需要將其設置為每個 1.00。 現在它就像一個魅力,因為它只是從數組中獲取 options.value 並將其設置為當前價格,但是我需要將此折扣功能添加到我的 function 中。 我怎樣才能做到這一點?
我目前的工作 function 沒有折扣條件。
private getSelectedOptions(options) {
return (options || []).filter(x => x.selected).map
(option => ({ name: option.name, value: option.value || 0 }));
}
選項數組
"options": [
{
"name": "Red Pepper",
"selected": false,
"value": 2.00
},
{
"name": "Garlic",
"selected": false,
"value": 2.00
},
{
"name": "Cheese blend",
"selected": false,
"value": 2.00
},
{
"name": "pineapple",
"selected": false,
"value": 2.00
},
{
"name": "bacon",
"selected": false,
"value": 2.00
},
{
"name": "green pepper",
"selected": false,
}
首先將映射數組保存在一個變量中,以便您可以檢查其length
以確定所需的價格:
private getSelectedOptions(options) {
const selectedItems = (options || []).filter(x => x.selected);
const price = selectedItems.length >= 6
? 1
: selectedItems.length >= 3
? 1.5
: 2;
return selectedItems.map(
option => ({ name: option.name, value: option.value ? price : 0 })
);
}
const getSelectedOptions = (options) => { const selectedItems = (options || []).filter(x => x.selected); const price = selectedItems.length >= 6? 1: selectedItems.length >= 3? 1.5: 2; return selectedItems.map( option => ({ name: option.name, value: option.value? price: 0 }) ); }; const options = [ { "name": "Red Pepper", "selected": true, "value": 2.00 }, { "name": "Garlic", "selected": true, "value": 2.00 }, { "name": "Cheese blend", "selected": true, "value": 2.00 }, { "name": "pineapple", "selected": false, "value": 2.00 }, { "name": "bacon", "selected": false, "value": 2.00 }, { "name": "green pepper", "selected": true, } ]; console.log(getSelectedOptions(options));
如果選項可以有不同的值,請找出一個乘以它們的因子,例如1
或0.75
或5
:
const getSelectedOptions = (options) => { const selectedItems = (options || []).filter(x => x.selected); const factor = selectedItems.length >= 6? 0.5: selectedItems.length >= 3? 0.75: 1; return selectedItems.map( option => ({ name: option.name, value: option.value * factor }) ); }; const options = [ { "name": "Red Pepper", "selected": true, "value": 5.00 }, { "name": "Garlic", "selected": true, "value": 2.00 }, { "name": "Cheese blend", "selected": true, "value": 2.00 }, { "name": "pineapple", "selected": false, "value": 2.00 }, { "name": "bacon", "selected": false, "value": 2.00 }, { "name": "green pepper", "selected": true, } ]; console.log(getSelectedOptions(options));
Arrow Function is a normal JavaScript function, so, if you remove the "()" and just put "{}" turn into a function, with body, to return an object again, return {}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.