Javascript 推送到阵列取决于选项

Javascript 推送到阵列取决于选项,javascript,arrays,node.js,object,logic,Javascript,Arrays,Node.js,Object,Logic,这就是选项对象: const选项={ groupZ:true,groupY:true, 类别1:正确,类别2:正确,类别3:正确, Zcategory1:true,Zcategory2:true,Zcategory3:true,Zcategory4:true, Y类别1:真,Y类别2:真,Y类别3:真,Y类别5:真 } 这就是我构建响应对象的方式: { …groupZ&&{ …Zcategory1&&{/*stuff*/} …Zcategory2&&{/*stuff*/} …Zcategory

这就是选项对象:

const选项={
groupZ:true,groupY:true,
类别1:正确,类别2:正确,类别3:正确,
Zcategory1:true,Zcategory2:true,Zcategory3:true,Zcategory4:true,
Y类别1:真,Y类别2:真,Y类别3:真,Y类别5:真
}
这就是我构建响应对象的方式:

{
…groupZ&&{
…Zcategory1&&{/*stuff*/}
…Zcategory2&&{/*stuff*/}
…Zcategory3&&{/*stuff*/}
…Zcategoriy4&&{/*stuff*/}
},
…群氓&&{
…Ycategory1&&{/*stuff*/}
…Ycategory2&&{/*stuff*/}
…Ycategoriy3&&{/*stuff*/}
…Y类别5&&{/*stuff*/}
}
}
所以我需要填充数组,这取决于我得到的选项:

const数组=[];
//如果所有选项都为真
//推送我得到的每个示例函数
array.push(
ExampleFunction1('param1');//将返回字符串数组
示例Function1('param2');
示例函数2();
示例函数3();
示例Function4('param1');
示例Function4('param2');
示例Function5('param1');
示例Function5('param2');
);
//如果Ycategory2为false,则按下ExampleFunction5('param2')以外的所有按钮;
array.push(
ExampleFunction1('param1');//将返回字符串数组
示例Function1('param2');
示例函数2();
示例函数3();
示例Function4('param1');
示例Function4('param2');
示例Function5('param1');
//示例Function5('param2');删除该
);
//如果为groupY,如果为false:
array.push(
ExampleFunction1('param1');//将返回字符串数组
//示例Function1('param2');
ExampleFunction2();//保留那个
//示例函数3();
示例Function4('param1');
//示例Function4('param2');
示例Function5('param1');
//示例Function5('param2');删除该
);
逻辑:

默认情况下,所有选项
true

例如,如果
Zcategory2
false
,则忽略
category2
选项

如果
groupZ
groupY
之外的任何选项为false,则忽略
groupZ
groupY

如果
groupZ
为false,则忽略
Z
(Zcategory1、Zcategory2等)的所有内容,与
groupY

我希望有足够的信息

另外,我不想要100行带有
if
else
的代码,因为这会使代码不可读,而这正是我现在拥有的

示例/我现在拥有的:

if(options.groupZ==false&&options.category1==false&&options.Zcategory1==true)数组.push(示例Function5('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(例如function1('param1'))
if(options.groupZ==false&&options.Zcategory3==true)array.push(例如function4('param1'))
if(options.groupY==false&&options.category1==false&&options.Zcategory1==true)array.push(例如function5('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(例如function1('param2'))
if(options.groupY==false&&options.Zcategory3==true)array.push(例如function4('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(
示例Function1('param1'),
示例Function2(),
示例Function4('param1'),
示例Function5('param1')
)
if(options.groupY)array.push(
示例Function1('param2'),
示例Function3(),
示例Function4('param2'),
示例Function5('param2')
)

您是否有一个som运行代码的小示例?我认为您应该在继续之前将其展平。也许可以使用一些函数使其更简单understandable@NinaScholz
if(opts.pvp===false&&opts.category1===false opts.Zcategory1==true)array.push(例如function5('param1'))
您是否只有布尔值?然后您可以直接或使用逻辑NOT
进行
false
检查;