【问题标题】:javascript loop odd/even in arrayjavascript循环奇数/偶数数组
【发布时间】:2012-10-10 15:48:03
【问题描述】:

我正在尝试在数组中进行循环,对内容进行排序并创建每个具有 2 个值的 div。

尝试了很多东西,但我无法弄清楚我需要做什么。

这就是我需要做的:在数组中循环并创建 div。每个 div 应该有 2 个数组值。像这样:

<div id="1">content, content 2</div>
<div id="2">content 3, content 4</div>
<div id="3">content 5, content 6</div>
<div id="4">content 7</div>

所以我有这样的数组:

var myArray = ['content', 'content 2', 'content 3', 'content 4', 'content 5', 'content 6', 'content 7'];

我是这样循环的:

for(var i=0; i<=myArray.length; i++){

    if(currentDiv == 1){
        $('#s'+currendDivID+'').append("<p>"+myArray[i]+"</p>");
            console.log(myArray[i]);
    }

    if(currentDiv == 2){
            $('#s'+currendDivID+'').append("<p>"+myArray[i]+"</p>");
            console.log(myArray[i]);
            $('#container').append("</div>");
    }



    console.log(currendDivID);

    if(currentDiv == 3){
        currendDivID ++;
        $('#container').append("<div id=\"s" + currendDivID + "\">");
        console.log(myArray[i]);
        $('#s'+currendDivID+'').append("<p>"+myArray[i]+"</p>");
    }

    if(currentDiv == 4){
        console.log(myArray[i]);
        $('#s'+currendDivID+'').append("<p>"+myArray[i]+"</p>");
        $('#container').append("</div>");
    }



    console.log(currendDivID);

    if(currentDiv == 5){
        currendDivID++;
        $('#container').append("<div id=\"s" + currendDivID + "\">");
        console.log(myArray[i]);
        $('#s'+currendDivID+'').append("<p>"+myArray[i]+"</p>");
    }

    if(currentDiv == 6){
        if(myArray[i] == undefined){
            return;
        }
        console.log(myArray[i]);
        $('#s'+currendDivID+'').append("<p>"+myArray[i]+"</p>");
        $('#container').append("</div>");
    }


    if(currentDiv == 7){
        currendDivID++;
            if(myArray[i] == undefined){
                $('#container').append("</div>");
                return;
            }
        $('#container').append("<div id=\"s" + currendDivID + "\">");
        console.log(myArray[i]);
        $('#s'+currendDivID+'').append("<p>"+myArray[i]+"</p>");
    }

    currentDiv ++;

}

这很好用,但我需要对每个 div 进行硬编码以计数然后填充。 有没有更好的方法来做到这一点,而不是像我在 currentDiv var 上那样对元素的数量进行硬编码?

谢谢

【问题讨论】:

  • 在您的示例中,数组中的值与它们应该如何输入到 div 中是连续的 - 真的是这样吗?

标签: php javascript jquery loops


【解决方案1】:

您可以使用% 模运算符找出偶数和奇数,因为它会在除法后为您提供余数。数除以 2 余数为零则为偶数,余数为 1 则为奇数。

for(var i=0; i<=myArray.length; i++){        
   if(currentDiv % 2 == 0){ 

   } 
   else{

   } 
}

您可以将 currentDiv 与 i 循环增量变量一起使用,而且我认为循环计数器正在进行一次额外的迭代,我通过启动 loop from i=1 进行了调整。

for(var i=1; i<=myArray.length; i++){        
   if(i % 2 == 0){ 
        $('#s' + i + '').append("<p>"+myArray[i]+"</p>");
        console.log(myArray[i]);    
   } 
   else{
       console.log(myArray[i]);
       $('#s'+ i + '').append("<p>"+myArray[i]+"</p>");
       $('#container').append("</div>");
   } 
}

【讨论】:

  • 谢谢。我试过了,但看起来总是附加到第一个 div。会尝试不同的东西。
  • 我认为问题是由于 $('#s'+currendDivID+'') 因为 currendDivID 在解决方案中没有增加。将其更改为 $('#s'+ i + '') 将解决问题。请试一试。我已经更新了我的答案。
  • for(var i=0; i&lt;=myArray.length; i++){ {中多了一个{
  • @IanJennings,感谢您的指出。我做了更正。
【解决方案2】:

使用取模运算符。

所以currentDiv % 2 == 0 表示偶数
currentDiv % 2 == 1 表示奇数

它的作用是除以 2 并比较余数 (http://en.wikipedia.org/wiki/Euclidean_division)

【讨论】:

  • 知道了。非常感谢你。只需添加 currendDivID++;在 else 语句中
【解决方案3】:
var arr=['content','content2','content3','content4','content5'];

for(var i=0;i<=arrlen;i++){

        if(i%2==0){

            if(i!=(arrlen-1)){
                if(i!=arrlen){
                    console.log(arr[i]+" "+arr[i+1]);
                }else{
                    break;
                }
            }else{

                console.log(arr[i]);
            }

        }

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 2019-01-10
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多