warum javascript zeigt komisches Verhalten?

Ich hatte versucht, dieses Stück code in java, die funktioniert richtig gut, aber beim Umschalten in javascript ist es nicht richtig funktioniert.

function checkNumberIfContainsKey(number, key){
    while(number > 0){
        if(number%10 == key){
            return true;
        }
        number /= 10;        
    }
    return false;
}

console.log(checkNumberIfContainsKey(19, 9));
console.log(checkNumberIfContainsKey(191, 9));
console.log(checkNumberIfContainsKey(912, 9));
console.log(checkNumberIfContainsKey(854, 9));

diese Funktion sollte true zurückgeben, wenn es mit Schlüssel in jeder position. Beispiel: checkNumberIfContainsKey(19, 9) Ausgabe: true

my expected output:
checkNumberIfContainsKey(19, 9)   //true
checkNumberIfContainsKey(191, 9)  //true
checkNumberIfContainsKey(912, 9)  //true
checkNumberIfContainsKey(185, 9)  //false
my output:
checkNumberIfContainsKey(19, 9)   //true
checkNumberIfContainsKey(191, 9)  //false
checkNumberIfContainsKey(912, 9)  //false
checkNumberIfContainsKey(185, 9)  //false

2 Antworten

  • CertainPerformance
    4. Mai 2019

    number /= 10 innen while(number > 0) wird ausgeführt, viele Male, bis präzise ausfällt. (z.B. für 191: 191, dann 19.1, dann 1.91, dann 0.191, ...) Wahrscheinlich besser, teilen Sie die Zahl in ein array von einzelnen Ziffern, dann überprüfen Sie, ob die Ziffer, die Sie suchen enthalten, in das array:

    function checkNumberIfContainsKey(number, key){
        return String(number).split('').includes(String(key))
    }
    
    console.log(
      checkNumberIfContainsKey(19, 9),   //true
      checkNumberIfContainsKey(191, 9),  //true
      checkNumberIfContainsKey(912, 9),  //true
      checkNumberIfContainsKey(185, 9)  //false
    );

  • Shridhar Sharma
    4. Mai 2019

    Verwenden Sie es wie diese

    function checkNumberIfContainsKey(number, key){
      var a = !!number.toString().match(key)
      console.log(a)
      return a;
    }
    
    checkNumberIfContainsKey(19, 9)   //true
    checkNumberIfContainsKey(191, 9)  //true
    checkNumberIfContainsKey(912, 9)  //true
    checkNumberIfContainsKey(185, 9)  //false