检查一个数字是否包含另一个数字的最好方法

Best way to check if a number contains another number

本文关键字:数字 另一个 方法 包含 是否 一个 检查      更新时间:2023-09-26

例如,如果数字752包含数字5?最好的检查方法是什么?转换为字符串或分成单独的数字?

转换为字符串并使用indexOf

(752+'').indexOf('5') > -1

console.log((752+'').indexOf('5') > -1);
console.log((752+'').indexOf('9') > -1);

转换为string并使用以下选项之一:

indexOf():

(number + '').indexOf(needle) > -1;

includes():

(number + '').includes(needle);

有三种使用方法:

  1. 检查字符串是否包含:

    var num = 752;
    num.toString().indexOf('5') > -1 //return true or false - contains or not
    
  2. 按循环检查

    var f = 2;
    while(num > 0 ){
      if( num % 10 == f){
        console.log("true");
        break;
      }
      num = Math.floor(num / 10); 
    }
    
  3. 按正则表达式检查

     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 of digits),如果number = 10235,则number of digits = 5

您也可以使用"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

这样我们就可以检查任意数字。我希望"有些人"会觉得这有用。:)

相关文章: