2016-07-27 72 views
1

我正在尝试解决Javascript拼图。我需要编写一个函数,该函数使用while循环将字符添加到字符串的开头,然后在下一个循环中将字符添加到字符串的末尾,然后将字符添加到循环的开始位置。该函数需要两个参数一个字符串和一些字符来添加。 到目前为止,我有交替向字符串的开头和结尾添加字符

function padIt(str,n){ 
    //coding here 
    var newStr = ""; 
    var padding = "*"; 
    var i = 0; 

    while(i<=n){ 
     if (i%2===0){ 
      newStr = newStr+padding; 
     } else{ 
      newStr = padding+str; 
     } 
     i++; 
    } 
    return newStr; 
    } 

我传递的前两个测试案例,但它不会通过循环第三次正常工作。对于n = 3,期望“* * a *”但只能得到“* a”。它必须是一个while循环,所以我不知道我是不是正确地设置了循环,或者如果我搞乱了变量。任何帮助非常感谢,因为我完全失去了。

+0

您需要注释/删除您'// +中newstr填充=;'线。 –

回答

0

您可以通过编写像下面的代码做到这一点,

function padIt(str,n, pad = "*"){ 
    var left = Math.ceil(n/2), right = n - left; 
    return pad.repeat(left) + str + pad.repeat(right); 
} 

而这个功能将打印,

console.log("a", 1); // "*a" 
console.log("a", 2); // "*a*" 
console.log("a", 10); // "*****a*****" 

事情需要执行这段代码后进行读取,

+1

不是一个while循环,但我认为这绝对是我应该如何使用变量。 –

0

您需要评论您的newStr+=padding;行。

这里是细化码,

function padIt(str,n){ 
    //coding here 
    var newStr = ""; 
    var padding = "*"; 
    var i = 0; 

    while(i<=n){ 
    i++; 
    newStr=padding+str; 
    //newStr+=padding; 
} 

    return newStr; 

} 

HTH