Один из способов сделать это - написать собственную функцию и указать в ней строку с логическими операторами, например:
Вы можете разобрать каждое условие и проверить, находится ли значение в исходном массиве
var val = [[1,2,"3"], ["4",5,6], [7,8,9]];
var vals = val.reduce((acc, val) => acc.concat(val), []);
function orIncludes(source, testString) {
var orValues = testString.split("||").map(val => {
try {
return JSON.parse(val.trim())
}catch(e) {
return val.trim();
}
});
return orValues.some(val => source.includes(val));
}
console.log(orIncludes(vals, '10 || 12 || 3 || "4"')); // true - matches "4"
console.log(orIncludes(vals, '"3" || 8 || 3 || "4"')); // true - matches "3"
console.log(orIncludes(vals, '"2" || 2 || 5 || "19"')); // true - matches 2
console.log(orIncludes(vals, '10 || 12 || "9" || 4')); // false - no match
Более простой способ сделать это , если вы не заботитесь о комбинировании ИЛИ и И (что выше позволит вам сделать, если вы расширили его с помощью &&
), это просто передать отдельные значения в качестве параметров и проверьте их, например, так:
var val = [[1, 2, "3"],["4", 5, 6],[7, 8, 9]];
var vals = val.reduce((acc, val) => acc.concat(val), []);
function orIncludes(source, ...testValues) {
return testValues.some(val => source.includes(val));
}
console.log(orIncludes(vals, 10, 12, 3, "4")); // true - matches "4"
console.log(orIncludes(vals, "3", 8, 3, "4")); // true - matches "3"
console.log(orIncludes(vals, "2", 2, 5, "19")); // true - matches 2
console.log(orIncludes(vals, 10, 12, "9", 4)); // false - no match
Более конкретно для вашего случая:
var vals = val.reduce((acc, val) => acc.concat(val), []);
if (vals.includes("CH Nord Mayenne") && orIncludes(vals, 'Douleur','Psychologie','Nutrition')){
CHNM.addTo(myfrugalmap);
} else {
CHNM.remove();
}