Javascript 为什么它无法匹配?

Javascript 为什么它无法匹配?,javascript,jquery,Javascript,Jquery,为什么它无法匹配 var d = $('#bstudylevel').val(); // Bachelor var g = $('#bfrench').val(); // Moedertaal var h = $('#bnederlands').val(); // Moedertaal switch(selected_language) { //NL case 'NL': if( ((d!=='Bachelor') || (d!=='Master') ||

为什么它无法匹配

  var d = $('#bstudylevel').val();  // Bachelor
  var g = $('#bfrench').val(); // Moedertaal
  var h = $('#bnederlands').val(); // Moedertaal

  switch(selected_language) { //NL
    case 'NL':
      if( ((d!=='Bachelor') || (d!=='Master') || (d!=='Doctoraat') ) && 
          ((g!=='Moedertaal') || (g!=='Zeer Goed') ) && 
          ((h!=='Moedertaal') || (h!=='Zeer Goed') )
      ) {
          console.log("You do not match the requirement: ", d, g, h);
          return false;
      }
      break;
    case 'FR':
      if( ((d!=='Bachelier') || (d!=='Master') || (d!=='Doctorat') ) && 
          ((g!=='Très bon')  || (g!=='Bon') ) && 
          ((h!=='Très bon')  || (h!=='Zeer Goed') )
      ) {
        console.log("You do not match the requirement: ", d, g, h);
        return false;
      }      
      break;
  }

  console.log('Expected output is this..., not above');
输出:

您不符合以下任何表达式中的要求:学士学位Moedertaal Moedertaal

((d!=='Bachelier') || (d!=='Master') || (d!=='Doctorat') )
考虑
d
只能有一个值。因此,无论
d
是什么,它都不等于这些字符串之一。它可能不是它们中的任何一个,也可能是其中的一个,但不会全部是三个


因此,该值将始终为
true

,因为在代码
d
中始终有一个值为true:

if (((d !== 'Bachelor') || (d !== 'Master') || (d !== 'Doctoraat')) && ((g !== 'Moedertaal') || (g !== 'Zeer Goed')) && ((h !== 'Moedertaal') || (h !== 'Zeer Goed')))
例如

d !== 'Master' //true,
d !== 'Doctoraat' //true
一种解决方案是使用具有所有度数的数组,并按如下方式使用:

var d = 'Bachelor';
var g = 'Moedertaal';
var h = 'Moedertaal';
var degrees = ['Bachelor', 'Master', 'Doctoraat', 'Moedertaal', 'Zeer Goed', 'Moedertaal', 'Zeer Goed'];

case 'NL':
    //check if d meet the degrees requirements
    if (degrees.indexOf(d) !== -1) {
        console.log("You do not match the requirement: ", d, g, h);
        return false;
    }
break;

别担心,我们会帮你的。我在这里拉了把小提琴:


它最终进入第一个控制台,仅仅因为满足了条件。该怎么做,也许重写它是个好主意。

(d!=“Master”)
真的
<代码>(g!='Zeer Goed')是
真的
,我想你现在可以理解为什么了?实际的问题是,为什么这个问题无法理解?(d!='Bacher')| |(d!='Master')将始终是真的,无论所选语言的
的值是什么样的?OP的一点普通礼貌会很好。。。也许是对问题的描述,而不是一个非常简洁的陈述。
var d = 'Bachelor';
var g = 'Moedertaal';
var h = 'Moedertaal';
selected_language = 'NL';
switch(selected_language) { //NL
    case 'NL':
        if( ((d!=='Bachelor') || (d!=='Master') || (d!=='Doctoraat') ) && 
        ((g!=='Moedertaal') || (g!=='Zeer Goed') ) && 
        ((h!=='Moedertaal') || (h!=='Zeer Goed') )) {
            console.log("A");
            return false;
        }
        break;
    case 'FR':
        if( ((d!=='Bachelier') || (d!=='Master') || (d!=='Doctorat') ) && 
        ((g!=='Très bon')  || (g!=='Bon') ) && 
        ((h!=='Très bon')  || (h!=='Zeer Goed'))) {
            console.log("B");
            return false;
        }      
        break;
    }
console.log("C");