Javascript JS for循环如何获取第一个值
我为这个愚蠢的问题感到抱歉。我已经试了好几个小时了,但我真的无法让它工作。所以我有一个for循环,它循环一些数字。Javascript JS for循环如何获取第一个值,javascript,for-loop,Javascript,For Loop,我为这个愚蠢的问题感到抱歉。我已经试了好几个小时了,但我真的无法让它工作。所以我有一个for循环,它循环一些数字。 但它不接受第一个值(71990000) 如何做到这一点? 到目前为止,我得到的是: var minNr = 0000; var maxNr = 10000; var prefix = 7199; function Nummer(min,max) { var regex = /^
但它不接受第一个值(
71990000
)
如何做到这一点?到目前为止,我得到的是:
var minNr = 0000;
var maxNr = 10000;
var prefix = 7199;
function Nummer(min,max)
{
var regex = /^(\d{2})\1$/;
var guld_nr;
for(guld_nr = minNr; guld_nr < maxNr;)
{
if(regex.test(guld_nr))
{
$(".resultat").append(prefix + "" + guld_nr + "<br>");
}
guld_nr++;
}
}
但我还需要号码:71990000
我如何才能做到这一点?使用字符串:
var minNr = '0000';
这是正则表达式测试的起始值,需要四个零。如果它是一个数字,那么测试只得到一个零。如果你用前导零填充它,这会有帮助
var minNr='0000',
最大NR=10000,
前缀=7199;
功能数字(最小值、最大值){
var regex=/^(\d{2})\1$/;
瓦尔古尔德;
对于(guld_nr=minNr;guld_nr”;
}
}
}
Nummer(minNr,maxNr)代码>使用字符串:
var minNr = '0000';
这是正则表达式测试的起始值,需要四个零。如果它是一个数字,那么测试只得到一个零。如果你用前导零填充它,这会有帮助
var minNr='0000',
最大NR=10000,
前缀=7199;
功能数字(最小值、最大值){
var regex=/^(\d{2})\1$/;
瓦尔古尔德;
对于(guld_nr=minNr;guld_nr”;
}
}
}
Nummer(minNr,maxNr)代码>数字本身不归零<代码>0000;//0
为它创建一个自定义的零填充方法,这样您就可以执行zpad(0,4);//“0000”
现在相应地调整numer
function Nummer(min, max, prefix) {
var regex = /^(\d{2})\1$/,
i, str;
prefix = prefix || '';
for(i = min; i < max; ++i) {
str = zpad(i, 4);
if(regex.test(str)) console.log(prefix + str);
}
}
旁注
<代码> Nummer <代码>并没有构造对象,考虑CAMEL外壳它
数字本身不归零<代码>0000;//0
为它创建一个自定义的零填充方法,这样您就可以执行
zpad(0,4);//“0000”
现在相应地调整numer
function Nummer(min, max, prefix) {
var regex = /^(\d{2})\1$/,
i, str;
prefix = prefix || '';
for(i = min; i < max; ++i) {
str = zpad(i, 4);
if(regex.test(str)) console.log(prefix + str);
}
}
旁注
- 这是因为您的正则表达式拒绝数字0;第一次通过循环时,
minNr
的数值为0(将其设置为0000没有帮助;这只是一种表示0的奇特方式)。正则表达式要求两个数字后跟相同的模式,但您给它的是字符串“0”
您可以在第一次通过时将minNr
设置为字符串('0000'
),这将解决“0000”的问题,但您将错过“0101”、“0202”等(这将转换为字符串“101”、“202”等)
一种解决方案是将数字的字符串表示形式置零。以下函数将接受任何数字,并将其保留为零,以适合给定的宽度:
function zeropad(n, w) {
n = String(n);
while(n.length < w) n = '0' + n;
return n;
}
还要注意,
Number
是JavaScript中文本的内置对象包装器(所有原语都有对象包装器:Number
,Boolean
,String
),通过创建一个名为Number
的函数,您正在阻止这个内置对象,这是不可取的(需要使用它的代码将调用您的函数,这是不兼容的,并且有不同的用途)。这是因为您的正则表达式拒绝数字0;第一次循环时,minNr
的数值为0(将其设置为0000没有帮助;这只是说0的一种奇特方式)。正则表达式要求两个数字后跟相同的模式,但您给它的是字符串“0”
您可以在第一次通过时将minNr
设置为字符串('0000'
),这将解决“0000”的问题,但您将错过“0101”、“0202”等(这将转换为字符串“101”、“202”等)
一种解决方案是将数字的字符串表示形式置零。以下函数将接受任何数字,并将其置零以适合给定的宽度:
function zeropad(n, w) {
n = String(n);
while(n.length < w) n = '0' + n;
return n;
}
还要注意,
Number
是JavaScript中文本的内置对象包装器(所有原语都有对象包装器:Number
,Boolean
,String
),通过创建一个名为Number
的函数,您正在阻止这个内置对象,这是不可取的(需要使用它的代码将调用您的函数,该函数不兼容且用途不同)。您可以使用算术进行数字模式检查,并将结果保留为数字:
var minNr=0;//在这里放4个零没有帮助。
var maxNr=10000;
var前缀=7199;
功能数字(最小值、最大值){
对于(变量guld_nr=min;guld_nr”);
}
}
}
Nummer(minNr,maxNr);
您可以使用算术进行数字模式检查,并将结果保留为数字:
var minNr=0;//在这里放4个零没有帮助。
var maxNr=10000;
var前缀=7199;
功能数字(最小值、最大值){
对于(变量guld_nr=min;guld_nr”);
}
}
}
Nummer(minNr,maxNr);
谢谢!成功了!你能告诉我,为什么我需要零成为字符串吗?我想知道,另一次,它是正则表达式测试的起始值,你需要四个零。如果它是一个数字,那么你在测试中只能得到一个零。如果你用前导零填充它,这会有帮助。谢谢!成功了!C你告诉我为什么我需要零成为一个字符串?我想知道,
regex.test(zeropad(guld_nr, 4))