如何向已经包含 .map 和 .filter 的箭头函数添加 if 、 else if 和 else 条件?
How do I add an if , else if, else condition to my arrow function which includes .map and .filter already?
下面的函数需要设置选项数组中选定元素的option.value。如果选择了 3 个或更多选项,则需要将其设置为每个 1.50 美元,如果选择 6 个或更多选项,则每个选项需要设置为 1.00 美元。现在它就像一个魅力,因为它只是从数组中获取 options.value 并将其设置为当前价格,但是我需要将此折扣功能添加到我的函数中。我怎样才能做到这一点?
我目前的工作功能没有折扣。
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,
}
箭头函数是一个普通的JavaScript函数,所以,如果你去掉“()”,只把“{}”变成一个函数,带主体,return一个对象再次,return {}
首先将映射数组保存在一个变量中,这样您就可以检查它 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));
下面的函数需要设置选项数组中选定元素的option.value。如果选择了 3 个或更多选项,则需要将其设置为每个 1.50 美元,如果选择 6 个或更多选项,则每个选项需要设置为 1.00 美元。现在它就像一个魅力,因为它只是从数组中获取 options.value 并将其设置为当前价格,但是我需要将此折扣功能添加到我的函数中。我怎样才能做到这一点?
我目前的工作功能没有折扣。
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,
}
箭头函数是一个普通的JavaScript函数,所以,如果你去掉“()”,只把“{}”变成一个函数,带主体,return一个对象再次,return {}
首先将映射数组保存在一个变量中,这样您就可以检查它 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));