我想过滤一个表(2d数组(和IF条件(取决于HTML选择值(,并使用以下代码
transportRegFiltered = transportReg.filter(r =>
{if(lugarDe.value == "TODOS"){return true} else {return (r[6] == lugarDe.value)}
})
有一个条件就可以了,但我需要几个。Smth样
transportRegFiltered = transportReg.filter(r =>
{if(lugarDe.value == "TODOS"){return true} else {return (r[6] == lugarDe.value)}
if(lugarA.value == "TODOS"){return true} else {return (r[7] == lugarA.value)}
}
我该怎么做?
您可以使用OR运算符返回所有条件。因为
if(A) { return true; } else { return B; }
if(C) { return true; } else { return D; }
转换为
return A || B || C || D;
所以你可以在过滤器里面写这样的东西,
return ( lugarDe.value == "TODOS" || r[6] == lugarDe.value || lugarA.value == "TODOS" || r[7] == lugarA.value ... and all the other conditions );
我真的不清楚你希望if语句到底做什么,但一个尝试是检查值,然后用OR检查其他条件。
var isTodos = [lugarDe.value, lugarA.value].includes("TODOS");
return isTodos || r[6] == lugarDe.value || r[7] == lugarA.value;
如果满足每个过滤器的条件,您是否尝试独立应用该过滤器?在这种情况下,您可以级联过滤器:
transportRegFiltered = transportReg
.filter((r) => {
if (lugarDe.value == "TODOS") {
return true;
} else {
return r[6] == lugarDe.value;
}
})
.filter((r) => {
if (lugarA.value == "TODOS") {
return true;
} else {
return r[7] == lugarA.value;
}
});
您可以使用一个数组来检查值。
transportRegFiltered = transportReg.filter(r => {
const values = [lugarDe.value, lugarA.value];
return values.includes("TODOS") || values.some((v, i) => v === r[i + 6]);
});
好吧,我用最简单直接的方式做到了。只是想找个好看的。。。我只是循环浏览了3个输入的所有选项,并为每个组合分配了不同的过滤器,包括或不包括相关的过滤器条件
var transportRegFiltered;
if(lugarDe.value == "TODOS" && lugarA.value == "TODOS" && lotIdSearch.value.length == 0){
transportRegFiltered = transportReg}
else if (lugarDe.value == "TODOS" && lugarA.value == "TODOS" && lotIdSearch.value.length > 0) {
transportRegFiltered = transportReg.filter(r => (r[5]).toString().toLowerCase().startsWith(lotIdSearchValue))}
else if (lugarDe.value !== "TODOS" && lugarA.value == "TODOS" && lotIdSearch.value.length == 0) {
transportRegFiltered = transportReg.filter(r => r[6] == lugarDe.value)}
else if (lugarDe.value == "TODOS" && lugarA.value !== "TODOS" && lotIdSearch.value.length == 0) {
transportRegFiltered = transportReg.filter(r => r[7] == lugarA.value)}
else if (lugarDe.value !== "TODOS" && lugarA.value !== "TODOS" && lotIdSearch.value.length == 0) {
transportRegFiltered = transportReg.filter(r => r[6] == lugarDe.value && r[7] == lugarA.value)}
else if (lugarDe.value !== "TODOS" && lugarA.value == "TODOS" && lotIdSearch.value.length > 0) {
transportRegFiltered = transportReg.filter(r => r[6] == lugarDe.value && (r[5]).toString().toLowerCase().startsWith(lotIdSearchValue))}
else if (lugarDe.value == "TODOS" && lugarA.value !== "TODOS" && lotIdSearch.value.length > 0) {
transportRegFiltered = transportReg.filter(r => r[7] == lugarA.value && (r[5]).toString().toLowerCase().startsWith(lotIdSearchValue))}
else if (lugarDe.value !== "TODOS" && lugarA.value !== "TODOS" && lotIdSearch.value.length > 0) {
transportRegFiltered = transportReg.filter(r => r[6] == lugarDe.value && r[7] == lugarA.value && (r[5]).toString().toLowerCase().startsWith(lotIdSearchValue))}