例如,如果数字752包含数字5?最好的检查方法是什么?将其转换为字符串还是将其分解为单个数字?
转换为字符串并使用 indexOf
(752+'').indexOf('5') > -1
console.log((752+'').indexOf('5') > -1);
console.log((752+'').indexOf('9') > -1);
(752+'').indexOf('5')
,否则''.indexOf('5')
会先被计算。 - BoppreH转换为字符串
并使用以下选项之一:
indexOf()
:
(number + '').indexOf(needle) > -1;
includes()
:
(number + '').includes(needle);
Check it by string contains:
var num = 752;
num.toString().indexOf('5') > -1 //return true or false - contains or not
Check by loop
var f = 2;
while(num > 0 ){
if( num % 10 == f){
console.log("true");
break;
}
num = Math.floor(num / 10);
}
Check by regular expressions
num.toString().match(/5/) != null //return true if contains
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
);
在所有可用答案中,由于该程序的复杂性,最有效的解决方案只需O(数字位数)
,如果number = 10235
,则数字位数=5
你也可以使用 "some" 函数。 类似这样的 "some":
function hasFive(num){
return num.toString().split("").some(function(item){
return item === "5";
});
}
然后您可以调用它:
hasFive(752)
function hasNumber(num, digit){
return num.toString().split("").some(function(item){
return item == digit;
});
}
然后以类似的方式调用它:
hasNumber(1234,3) //true
hasNumber(1244,3) //false
这样我们就可以检查任何数字的任何位数了。 希望“某个”人会发现这很有用。:)
(752).toString().match(/5/)
。 - ndugger