Включает или включает? - PullRequest
       11

Включает или включает?

0 голосов
/ 06 сентября 2018

Я хочу написать:

if ( (val = "") **and**if ((val = "") or (val = "") or (val = "")) ), 

тогда ..

 if (val.reduce((acc, val) => acc.concat(val), []).includes("CH Nord Mayenne") 
  && val.reduce((acc, val) => acc.concat(val), []).includes('Douleur','Psychologie','Nutrition'))

    { CHNM.addTo(myfrugalmap) ;} else {CHNM.remove();}

как я могу написать "или" оператор?

1 Ответ

0 голосов
/ 06 сентября 2018

Один из способов сделать это - написать собственную функцию и указать в ней строку с логическими операторами, например:

Вы можете разобрать каждое условие и проверить, находится ли значение в исходном массиве

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();
}
...