使用Javascript打印模式或特定节奏值

时间:2017-09-16 16:16:31

标签: javascript design-patterns printing iteration

我正在开发一个网站设计,我一度陷入困境。我想仅使用JS打印01值。模式应该像

010110100101

每4次迭代,它就会改变它的起始位置。喜欢

0101 - 1010 - 0101 - &继续...

帮助将不胜感激!

我的尝试:

var max_num = 32; // Max number - it can vary
for (var x = 0; x < max_num; x++ ) {
    if( x % 2 == 0){
        document.write('0');
    } else {
        document.write('1');
    }
}

3 个答案:

答案 0 :(得分:0)

更正您的代码:

在你的循环中,条件x % 2 == 0应该每4次迭代改变它的值。你可以这样做:

x % 2 === Math.floor(x / 4) % 2

Math.floor(x / 4) % 2将每4次迭代更改其值,因此我们使用它来改变条件。

示范:

x    | x % 2 | Math.floor(x / 4) % 2 | condition | value to print
-----------------------------------------------------------------
0    | 0     | 0                     | true      | 0
1    | 1     | 0                     | false     | 1
2    | 0     | 0                     | true      | 0
3    | 1     | 0                     | false     | 1
4    | 0     | 1                     | false     | 1
5    | 1     | 1                     | true      | 0
6    | 0     | 1                     | false     | 1
7    | 1     | 1                     | true      | 0
8    | 0     | 0                     | true      | 0
9    | 1     | 0                     | false     | 1

示例:

&#13;
&#13;
function pattern(length) {
    var str = "";
    for (var x = 0; x < length; x++ ) {
        if( x % 2 === Math.floor(x / 4) % 2 ){
            str += "0";
        } else {
            str += "1";
        }
    }
    return str;
}


console.log(pattern(10));
console.log(pattern(3));
&#13;
&#13;
&#13;

另一种方法:

您可以使用数组并使用"01011010"(基本重复字符串,句点)填充它,然后将其连接起来,然后根据需要从字符串中剪切出来:

&#13;
&#13;
function pattern(length) {
  return new Array(Math.ceil(length / 8))          // create the array that will hold the 8-chars strings (length / 8 using ceil for excess) 
             .fill("01011010")                     // fill it with the 8-chars
             .join("")                             // join them
             .slice(0, length);                    // then cut out just what you need
}


console.log(pattern(10));
console.log(pattern(3));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

试试这个。

git rm --cached path/to/folder

答案 2 :(得分:0)

你可以尝试这个, 我已经在我的结尾测试了它:

 var startPos=0;
    var array=[];
    var to=false;
    for(var i=0;i<16;i++){
if(startPos/4 ==1 || startPos/4 ==2 || startPos/4 ==3 || startPos/4 ==4){
    to=true;
    }
    else{
    to=false;
    }
    if(to){
    if(array){
    if(array[i-1]==1){
    array.push(1);
    to=false;
    }
    else{
    array.push(0);
    }
    }
    }
    else{
    if(array){
    if(array[i-1]==0){
    array.push(1);
    }
    else{
    array.push(0);
    }
    }
    }
    console.log(startPos,array);
    startPos++;
    }