示例:我们的号码为1122
。我想检查一下,如果给定的数字包含数字1
不止一次。在这种情况下,它应该返回true
。
我需要代码具有灵活性,它必须适用于任何数字,例如3340
,5660
,4177
等。
答案 0 :(得分:2)
您可以轻松地“强制” JS将任何数值强制转换为字符串,方法是调用toString
方法或连接:
var someNum = 1122;
var oneCount = (someNum + '').split('1').length;
通过将数字连接到空字符串,变量被强制转换为字符串,因此您可以使用您喜欢的所有字符串方法(.match
,.substring
,.indexOf
,. ..)。
在这个例子中,我选择在每个'1'
char上拆分字符串,计数并使用结果数组的长度。如果长度> 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.
答案 1 :(得分:1)
使用javascript的match()
方法。基本上,您需要做的是首先将数字转换为字符串。数字没有RegExp方法。之后,全局匹配数字1并计算结果(匹配返回一个包含所有匹配结果的数组)。
var number = 1100;
console.log(number.toString().match(/1/g).length);
答案 2 :(得分:1)
function find(num, tofind) {
var b = parseInt(num, 10);
var c = parseInt(tofind, 10);
var a = c.split("");
var times = 0;
for (var i = 0; i < a.length; i++) {
if (a[i] == b) {
times++;
}
}
alert(times);
}
find('2', '1122');
答案 3 :(得分:1)
将数字转换为字符串并迭代它。为了提高效率,一旦找到第二个数字,则返回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;
}
如果您想检查一系列数字,您的解决方案可能在于使用正则表达式。
答案 4 :(得分:0)
var myNum = '0011';
var isMultipleTimes = function(num) {
return !!num.toString().match(/(\d)\1/g);
}
console.log(isMultipleTimes(myNum));
JavaScript Match
答案 5 :(得分:0)
使用 @Aspiring Aqib 的回答,我创建了一个实际上正常运行的功能。
它的工作方式是:
执行示例:
multDig('221','2')
number
(第一个参数)拆分为一个数组,其中每个元素都是一位数。['2','2','1']
< / LI>
for
循环,检查每个数组元素是否与digit
(第二个参数)匹配,并递增times
变量如果匹配。2
2211111111111111
等较长数字的效果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;
}