所以,问题的本质是:是否有可能以某种方式从几组变量生成一个复合条件。如果可以的话,该怎么做?
为什么这是必要的?
所以,我有一个对象数组:
let people = [
{gender: 0, adult: 1, work: 0, workPlace: 0},
{gender: 1, adult: 0, work: 0, workPlace: 0},
{gender: 1, adult: 1, work: 1, workPlace: 2},
{gender: 0, adult: 0, work: 1, workPlace: 1},
...
]
我有一些元素select可以选择数组内对象属性的特定值:
<select name="Gender" class="sum2 sum3">
<option value="X">All</option>
<option value="0">Male</option>
<option value="1">Female</option>
</select>
<select name="Adult" class="sum2 sum3">
<option value="X">All</option>
<option value="1">Adult</option>
<option value="0">Children</option>
</select>
<select name="Work" class="sum2 sum3">
<option value="X">All</option>
<option value="1">Yes</option>
<option value="0">No</option>
</select>
而如果元素中的值select没有被选中ALL,那么就没有问题,我们只需将值放入value条件中,并根据所需的属性检查数组是否匹配即可。
但这里ALL出现了一个问题。由于该值必须按值包含所有可用选项。理论上,您只需从测试条件中删除具有 value 的属性ALL,但我不知道如何执行此操作。
也就是说,我们如何从这个条件中删除所有等于 的内容ALL,然后检查剩下的内容?只是ALL选项可能有很多,并且手动检查所有选项在某种程度上不太方便。
if (gen != ALL && ad == ALL && work == ALL) {
let i = 0
let key = 0
while (i != quality - 1) {
if (people[key].gender == gen) {
people[key].workPlace = VEGETABLE
i++
}
key++
}
我只是觉得这个问题一定有一些简单的解决方案,但我就是找不到。事实上,样式中一定有一些条件;如果这是值ALL,那么我们在检查数组时就不会考虑它。但如何以编程方式表达这一点?帮助!
您可以使用
ИЛИ形式为每个参数创建一个复合条件(gen === 'ALL' || el.gender === gen),在“ALL”的情况下,条件将立即为真,否则将检查是否符合特定选择。然后通过组合条件并И应用过滤器和/或进行其他必要的处理。