检查数字是否包含其他数字的最佳方法

时间:2015-07-29 14:16:14

标签: javascript

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

5 个答案:

答案 0 :(得分:6)

转换为字符串并使用indexOf

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



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




答案 1 :(得分:2)

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

indexOf()

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

includes()

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

答案 2 :(得分:1)

您可以使用3种方式:

  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
    

答案 3 :(得分:0)

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

答案 4 :(得分:0)

您还可以使用“某些”功能。 像这样的“东西”:

    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

这样,我们可以检查任何数字的任何数字。 我希望这样的“某个”人会觉得有用。 :)