Javascript 如何在函数中循环一定次数?

Javascript 如何在函数中循环一定次数?,javascript,Javascript,我有一个函数,它接受字符串值“1”,并向其中添加一个“0” 问题是,我想让它在函数中经过设定的次数。 i、 e.我希望它运行6次,以使数字最终为“1”“0”“1”“0”“1”“0”,然后使用join函数将它们作为数组中的单个值 警报(stringy()); //编写一个名为stringy的函数 函数字符串(大小){ //创建并清空数组以保存新值 var num=[] //将字符串值1推入数组 num.push('1') //循环遍历数组,如果变量等于1,则按0 对于(i=0;i1-(i%2))

我有一个函数,它接受字符串值“1”,并向其中添加一个“0”

问题是,我想让它在函数中经过设定的次数。 i、 e.我希望它运行6次,以使数字最终为“1”“0”“1”“0”“1”“0”,然后使用join函数将它们作为数组中的单个值

警报(stringy());
//编写一个名为stringy的函数
函数字符串(大小){
//创建并清空数组以保存新值
var num=[]
//将字符串值1推入数组
num.push('1')
//循环遍历数组,如果变量等于1,则按0
对于(i=0;i}
返回前需要一个条件,检查数组大小是否等于要求的大小:

if (num.length >= size) {
    return num.join();
}
是一种安全装置,可在
大小小于2时避免无限循环。调用函数时,不要忘记传递一个
size

请注意,在对数组进行迭代时将其添加到数组中是一种不好的做法:这可能会造成混淆,并导致未检测到的错误。我似乎理解你在课程或其他课程中把这个作为模板。如果是这样的话,忘记这种工作方式吧

这种功能的更好设计是:

函数字符串(大小){
返回数组.from(数组(大小),(513;,i)=>1-(i%2)).join(“”);
}
控制台日志(stringy(5));
控制台日志(stringy(6))有几个问题:

您没有在循环中使用传递的
size
。您将在for中返回,它仅在一次迭代后返回

我认为这更接近你想要的

function stringy(size){

    var num=[]
    num.push('1')
    for(i=0; i < size; i++){
        if(num[i]=='1'){
            num.push('0')
        } else if(num[i]=='0'){
        num.push('1')    }
    }
    return num.join();
}
函数字符串(大小){
var num=[]
num.push('1')
对于(i=0;i
您还可以简化一些内容,这有助于提高可读性:

function stringy(size){
    var num=[1]
    for(i=0; i < size; i++){
        num.push( num[i]==1 ? 0 : 1)
    }
    return num.join();
}
console.log(stringy(6))
函数字符串(大小){
var num=[1]
对于(i=0;i
功能(大小){
var迭代=数学地板(尺寸/2);
var结果=“”;
对于(var索引=0;索引<迭代次数;索引++){
结果+='10';
}
返回结果;
}
/**
*使用模运算符:
*模运算符(%)返回除法余数。
*因此:
*      0/2 = 0
*      1/2 = 1
*      2/2 = 0
*      3/2 = 1
*      4/2 = 0
*@param size int数组大小。
*@return-string加入数组:“1,0,1,0,1,0,…”
*/
函数字符串(大小){
var num=[];
对于(变量i=0;i
返回连接数()
for
循环之外。现在,它将在循环的第一次迭代结束时返回感谢您的帮助!我刚开始开发,所以我仍然在学习好的和坏的实践!我很高兴这个社区能对像我这样的新开发者如此有帮助
function something(size) {
    var iterations = Math.floor(size / 2);
    var result = '';

    for (var index = 0; index < iterations; index++) {
        result += '10';
    }

    return result;
}
/**
 * Use modulo operator:
 * The modulo operator (%) returns the division remainder.
 * So:
 *      0/2 = 0
 *      1/2 = 1
 *      2/2 = 0
 *      3/2 = 1
 *      4/2 = 0
 * @param size int Array size.
 * @return string Joined array: "1,0,1,0,1,0,..."
 */
function stringy(size) {
    var num = [];

    for (var i = 0; i < size; i++) {
        num.push((i % 2 === 0) ? 1 : 0);
    }

    return num.join();
}