javascript - 推送到数组取决于选项
问题描述
那是选项对象:
const options = {
groupZ: true, groupY: true,
category1: true, category2: true, category3: true,
Zcategory1: true, Zcategory2: true, Zcategory3: true, Zcategory4: true,
Ycategory1: true, Ycategory2: true, Ycategory3: true, Ycategory5: true
}
这就是我构建响应对象的方式:
{
...groupZ && {
...Zcategory1 && { /* stuff */ }
...Zcategory2 && { /* stuff */ }
...Zcategory3 && { /* stuff */ }
...Zcategory4 && { /* stuff */ }
},
...groupY && {
...Ycategory1 && { /* stuff */ }
...Ycategory2 && { /* stuff */ }
...Ycategory3 && { /* stuff */ }
...Ycategory5 && { /* stuff */ }
}
}
所以我需要填充数组取决于我得到的选项:
const array = [];
// if all options is true
// pushing every example functions I got
array.push(
ExampleFunction1('param1'); // will return array of strings
ExampleFunction1('param2');
ExampleFunction2();
ExampleFunction3();
ExampleFunction4('param1');
ExampleFunction4('param2');
ExampleFunction5('param1');
ExampleFunction5('param2');
);
// if Ycategory2 is false, push everything but ExampleFunction5('param2');
array.push(
ExampleFunction1('param1'); // will return array of strings
ExampleFunction1('param2');
ExampleFunction2();
ExampleFunction3();
ExampleFunction4('param1');
ExampleFunction4('param2');
ExampleFunction5('param1');
// ExampleFunction5('param2'); remove that
);
// if groupY if false:
array.push(
ExampleFunction1('param1'); // will return array of strings
// ExampleFunction1('param2');
ExampleFunction2(); // keep that
// ExampleFunction3();
ExampleFunction4('param1');
// ExampleFunction4('param2');
ExampleFunction5('param1');
// ExampleFunction5('param2'); remove that
);
逻辑:
true
默认所有选项
if Zcategory2
isfalse
例如,忽略category2
选项
groupZ
如果除了and之外的任何选项groupY
是错误的,请忽略groupZ
andgroupY
如果groupZ
为假,则忽略Z
(Zcategory1、Zcategory2 等)的所有内容,与groupY
我希望有足够的信息。
此外,我不想要 100 行代码,if
else
因为这会使代码不可读,而这正是我现在所拥有的。
示例/我现在拥有的:
if (options.groupZ === false && options.category1 === false && options.Zcategory1 === true) array.push(ExampleFunction5('param1'))
if (options.groupZ === false && options.category2 === false && options.Zcategory2 === true) array.push(ExampleFunction2()
if (options.groupZ === false && options.category3 === false && options.Zcategory3 === true) array.push(ExampleFunction1('param1'))
if (options.groupZ === false && options.Zcategory3 === true) array.push(ExampleFunction4('param1'))
if (options.groupY === false && options.category1 === false && options.Zcategory1 === true) array.push(ExampleFunction5('param2'))
if (options.groupY === false && options.category2 === false && options.Zcategory2 === true) array.push(ExampleFunction3()
if (options.groupY === false && options.category3 === false && options.Zcategory3 === true) array.push(ExampleFunction1('param2'))
if (options.groupY === false && options.Zcategory3 === true) array.push(ExampleFunction4('param2'))
if (options.category1 === true) array.push(ExampleFunction5('param1'), ExampleFunction5('param2'))
if (options.category2 === true) array.push(ExampleFunction2(), ExampleFunction3())
if (options.category3 === true) array.push(ExampleFunction1('param1'), ExampleFunction1('param'))
if (options.groupZ) array.push(
ExampleFunction1('param1'),
ExampleFunction2(),
ExampleFunction4('param1'),
ExampleFunction5('param1')
)
if (options.groupY) array.push(
ExampleFunction1('param2'),
ExampleFunction3(),
ExampleFunction4('param2'),
ExampleFunction5('param2')
)
解决方案
推荐阅读
- python - 将 lambda 表达式与 numpy 数组一起使用
- c# - 为什么这个带有可空值的 C# 重载不是模棱两可的?
- assembly - 将 ARM64 寄存器设置为 -1
- android - 选中复选框时添加值
- python - 使用 pyspark 和结构化流正确解析 kafka 流(使用当前模式处理获取所有空值)
- r - 聚会速率限制只有 200,获取其他记录的问题
- vuejs2 - 从 vuejs 方法返回元素
- c# - 如何在 .net core 中进行复杂的 2FA 身份验证
- excel - 我可以通过什么函数来确定 Excel 中的分数?
- python - 对 Vimscript 递归错误的解决方案感到困惑