Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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_Jquery - Fatal编程技术网

Javascript 如何使用循环将字符前置到字符串?

Javascript 如何使用循环将字符前置到字符串?,javascript,jquery,Javascript,Jquery,我有一个需要10位数字的输入字段。如果用户输入并提交一个小于10位的数字,函数只需添加一个“0”,直到输入的值长度为10位 我没有真正使用过递归函数,也不了解递归函数是如何工作的,但我基本上在寻找一种有效的方法来实现这一点。我遇到的一个小问题是如何在字符串的开头加上“0”的前缀,而不是附加到字符串的结尾 我的想法是: function lengthCheck(sQuery) { for (var i = 0; i < sQuery.length; i++) { if

我有一个需要10位数字的输入字段。如果用户输入并提交一个小于10位的数字,函数只需添加一个“0”,直到输入的值长度为10位

我没有真正使用过递归函数,也不了解递归函数是如何工作的,但我基本上在寻找一种有效的方法来实现这一点。我遇到的一个小问题是如何在字符串的开头加上“0”的前缀,而不是附加到字符串的结尾

我的想法是:

function lengthCheck(sQuery) {
    for (var i = 0; i < sQuery.length; i++) {
        if (sQuery.length !== 10) {
            sQuery += "0";
            //I'd like to add the 0s to the beggining of the sQuery string.
            console.log(sQuery);
            lengthCheck(sQuery);
        } else return sQuery
    }
}
功能长度检查(sQuery){
对于(变量i=0;i
更改:

sQuery += "0"; // added at end of string
致:

要删除for循环/递归,可以在一个步骤中切掉所需的长度:

function padZeros(sQuery) {
    // the max amount of zeros you want to lead with
    const maxLengthZeros = "0000000000"; 

    // takes the 10 rightmost characters and outputs them in a new string
    return (maxLengthZeros + sQuery).slice(-10); 
}
使用ES6的简单通用函数:

//为简洁起见,未实现边缘大小写约束
函数padZeros(sQuery=”“,maxPadding=10,outputLength=10){
//要引导的最大零数量
const maxLengthZeros=“0”。重复(maxPadding);
//返回最右边的“outputLength”字符
返回(maxLengthZeros+sQuery).slice(-outputLength);
}
log('padZeros:'+padZeros(“1234567890”);
log('padZeros:'+padZeros(“123”));

log('padZeros:'+padZeros(“”))
操作符在字符串末尾添加类似以下内容:

sQuery=sQuery+"0"
您可以像这样在字符串的前面添加字符

sQuery="0"+sQuery
我还发现了一些有趣的事情。它的工作原理如下:

("00000" + sQuery).slice(-5)
你可以在前面加上0,然后把除了最后5个以外的所有东西都切掉。因此,要获得10个字符,您可以使用:

("0000000000" + n).slice(-10)

我相信这里已经回答了这个问题(或者类似的问题可以为您提供解决方案):

您不需要递归来解决这个问题,只需要一个简单的for循环就可以了。试试这个:

function lengthCheck (sQuery) {
    for (var i = sQuery.length; i<10; i++) {
        sQuery = "0" + sQuery;  
    }
    return sQuery;
}
功能长度检查(sQuery){

对于(var i=sQuery.length;i您希望将字符串填充为零。这是我以前使用过的一个示例,它将稍微缩短您的代码:

function lengthCheck (sQuery) {
    while (sQuery.length < 10)
        sQuery = 0 + sQuery;
    return sQuery;
}
功能长度检查(sQuery){
while(sQuery.length<10)
sQuery=0+sQuery;
回归斯奎里;
}

Wow,完全忽略了这样一个简单的语法,这里有很多好的答案:确保在JavaScript中使用填充零数字时,注意可能影响数字转换的类型强制。例如:十进制文本可以以零(0)开头后跟另一个十进制数字,但如果前导0后的下一个数字小于8,则该数字将被解析为八进制数。
function lengthCheck (sQuery) {
    while (sQuery.length < 10)
        sQuery = 0 + sQuery;
    return sQuery;
}