Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查数字中是否多次使用数字_Javascript - Fatal编程技术网

Javascript 如何检查数字中是否多次使用数字

Javascript 如何检查数字中是否多次使用数字,javascript,Javascript,示例:我们有编号1122。我想检查给定的数字是否多次包含数字1。在这种情况下,它应该返回true 我需要的代码是灵活的,它必须与任何数字,如3340,5660,4177等一起工作。使用javascript的方法。基本上,您需要做的是首先将数字转换为字符串。数字没有RegExp方法。然后,全局匹配数字1并计算结果(match返回一个包含所有匹配结果的数组) 使用javascript的方法。基本上,您需要做的是首先将数字转换为字符串。数字没有RegExp方法。然后,全局匹配数字1并计算结果(matc

示例:我们有编号
1122
。我想检查给定的数字是否多次包含数字
1
。在这种情况下,它应该返回
true

我需要的代码是灵活的,它必须与任何数字,如
3340
5660
4177
等一起工作。

使用javascript的方法。基本上,您需要做的是首先将数字转换为字符串。数字没有RegExp方法。然后,全局匹配数字1并计算结果(match返回一个包含所有匹配结果的数组)

使用javascript的方法。基本上,您需要做的是首先将数字转换为字符串。数字没有RegExp方法。然后,全局匹配数字1并计算结果(match返回一个包含所有匹配结果的数组)

函数查找(num,tofind){
var b=parseInt(num,10);
var c=parseInt(tofind,10);
var a=c.分割(“”);
var时间=0;
对于(变量i=0;i
函数查找(num,tofind){
var b=parseInt(num,10);
var c=parseInt(tofind,10);
var a=c.分割(“”);
var时间=0;
对于(变量i=0;i
您可以通过调用
toString
方法或连接以下内容,轻松地“强制”JS将任何数值强制为字符串:

var someNum = 1122;
var oneCount = (someNum + '').split('1').length;
通过将数字连接到空字符串,变量被强制为字符串,因此您可以使用所有喜欢的字符串方法(
.match
.substring
.indexOf
,…)
在本例中,我选择在每个
'1'
字符上拆分字符串,计算并使用结果数组的长度。如果长度>2,则您知道您需要知道的内容。

var multipleOnes = ((someNum + '').split('1').length > 2);//returns a bool, true in this case
针对您的评论,为了使其灵活,编写一个简单的函数可以:

function multipleDigit(number, digit, moreThan)
{
    moreThan = (moreThan || 1) + 1;//default more than 1 time, +1 for the length at the end
    digit = (digit !== undefined ? digit : 1).toString();
    return ((someNum + '').split(digit).length > moreThan);
}
multipleDigit(1123, 1);//returns true
multipleDigit(1123, 1, 2);//returns false
multipleDigit(223344,3);//returns 3 -> more than 1 3 in number.
您可以通过调用
toString
方法或连接以下内容,轻松地“强制”JS将任何数值强制为字符串:

var someNum = 1122;
var oneCount = (someNum + '').split('1').length;
通过将数字连接到空字符串,变量被强制为字符串,因此您可以使用所有喜欢的字符串方法(
.match
.substring
.indexOf
,…)
在本例中,我选择在每个
'1'
字符上拆分字符串,计算并使用结果数组的长度。如果长度>2,则您知道您需要知道的内容。

var multipleOnes = ((someNum + '').split('1').length > 2);//returns a bool, true in this case
针对您的评论,为了使其灵活,编写一个简单的函数可以:

function multipleDigit(number, digit, moreThan)
{
    moreThan = (moreThan || 1) + 1;//default more than 1 time, +1 for the length at the end
    digit = (digit !== undefined ? digit : 1).toString();
    return ((someNum + '').split(digit).length > moreThan);
}
multipleDigit(1123, 1);//returns true
multipleDigit(1123, 1, 2);//returns false
multipleDigit(223344,3);//returns 3 -> more than 1 3 in number.
JavaScript


JavaScript将数字转换为字符串并迭代。为提高效率,在找到第二个数字后返回true

function checkDigitRepeat(number, digit) {
    var i, count = 0;

    i = Math.abs(number);
    if(isNaN(i)) {
        throw(TypeError('expected Number for number, got: ' + number));
    }
    number = i.toString();

    i = Math.abs(digit);
    if(isNaN(i)) {
        throw(TypeError('expected Number for digit, got: ' + digit));
    }
    digit = i.toString();

    if(digit > 9) {
        throw(SyntaxError('expected a digit for digit, got a sequence of digits: ' + digit));
    }

    for(i = 0; i < number.length; i += 1) {
        if(number[i] === digit) {
            count += 1;
            if(count >= 2) { return true; }
        }
    }

    return false;
}
函数checkDigitRepeat(数字){
变量i,计数=0;
i=Math.abs(数字);
if(isNaN(i)){
throw(TypeError('Number的预期数字,get:'+Number));
}
number=i.toString();
i=数学abs(数字);
if(isNaN(i)){
throw(TypeError('数字的预期数字,get:'+数字));
}
数字=i.toString();
如果(数字>9){
throw(SyntaxError('digit需要一个数字,获取一个数字序列:'+digit');
}
对于(i=0;i=2){return true;}
}
}
返回false;
}

如果要检查数字序列,您的解决方案可能在于使用正则表达式。

将数字转换为字符串并对其进行迭代。为提高效率,在找到第二个数字后返回true

function checkDigitRepeat(number, digit) {
    var i, count = 0;

    i = Math.abs(number);
    if(isNaN(i)) {
        throw(TypeError('expected Number for number, got: ' + number));
    }
    number = i.toString();

    i = Math.abs(digit);
    if(isNaN(i)) {
        throw(TypeError('expected Number for digit, got: ' + digit));
    }
    digit = i.toString();

    if(digit > 9) {
        throw(SyntaxError('expected a digit for digit, got a sequence of digits: ' + digit));
    }

    for(i = 0; i < number.length; i += 1) {
        if(number[i] === digit) {
            count += 1;
            if(count >= 2) { return true; }
        }
    }

    return false;
}
函数checkDigitRepeat(数字){
变量i,计数=0;
i=Math.abs(数字);
if(isNaN(i)){
throw(TypeError('Number的预期数字,get:'+Number));
}
number=i.toString();
i=数学abs(数字);
if(isNaN(i)){
throw(TypeError('数字的预期数字,get:'+数字));
}
数字=i.toString();
如果(数字>9){
throw(SyntaxError('digit需要一个数字,获取一个数字序列:'+digit');
}
对于(i=0;i=2){return true;}
}
}
返回false;
}

如果您想检查数字序列,您的解决方案可能在于使用正则表达式。

使用有抱负的Aqib的答案,我制作了一个实际工作正常且符合我要求的函数

它的工作方式是:

执行示例:
multDig('221','2')

  • 数字
    (第一个参数)拆分为一个数组,其中每个元素都是一位数字。
    输出:
    ['2','2','1']
  • 运行
    for
    循环,检查每个数组元素是否与
    数字(第二个参数)匹配,如果匹配,则增加
    乘以
    变量。
    输出:
    2
  • 检查for循环内部是否已检测到匹配,以提高较长数字(如
    22111111
  • 返回
    true
    如果多次找到该数字,否则返回
    false
  • 最后是代码本身:

    function multDig(number, digit){
        var finalSplit = number.toString().split(''), times = 0;
        for (i = 0; i < finalSplit.length; i++){
            if (finalSplit[i] == digit){
                times++
            }
            if (times > 1){
                return true;
            }
        }
        return false;
    }
    
    功能多路(数字、数字){
    var finalSplit=number.toString().split(“”),times=0;
    对于(i=0;i1){
    返回true;
    }
    }
    返回false;
    }
    
    使用有抱负的Aqib的答案,我制作了一个功能,它能以我想要的方式正常工作

    它的工作方式是:

    埃克萨