我已经在Java中尝试了这段代码,它可以正常工作,但是在切换javascript时它无法正常工作。
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));
如果此函数在任何位置包含键,则应返回true。 例: checkNumberIfContainsKey(19,9) 输出: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
答案 0 :(得分:1)
all
中的 number /= 10
将运行很多次,直到精度失败。 (例如,对于191:191,然后是19.1,然后是1.91,然后是0.191,...)将数字拆分成单个数字的数组可能更好,然后检查您要查找的数字是否包含在该数组中:
while(number > 0)
答案 1 :(得分:1)
像这样使用它
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
答案 2 :(得分:0)
我使用Java很久了,刚开始使用javascript 在Java中,所有数据都属于数据类型且经过严格定义,因此在Java中工作正常,但在JS中,如果我将数字除以其他数字(如果它是由十进制值得出的),则该变量会自动变为浮点数,因此它永远不会小于0。
通过应用Math.trunc()
函数忽略小数部分的最简单解决方案:
function checkNumberIfContainsKey(number, key){
while(number > 0){
if(number%10 == key){
return true;
}
number = Math.trunc(number / 10);
}
return false;
}
console.log(
checkNumberIfContainsKey(19, 9), //true
checkNumberIfContainsKey(191, 9), //true
checkNumberIfContainsKey(912, 9), //true
checkNumberIfContainsKey(185, 9) //false
);