簡體   English   中英

如何在我的箭頭 function 中添加 if、else if、else 條件,其中已經包含.map 和.filter?

[英]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));

如果選項可以有不同的值,請找出一個乘以它們的因子,例如10.755

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM