簡體   English   中英

獲取數組中的第n個項目

[英]Get every nth item in array

我有一個HTML元素數組。 我正在檢查數組中是否存在以前的對象,如下所示:

var boxes = $('.box'); // creating the array

boxes.each(function(i){ // going through the array
    var prevBox = i>0?$(boxes[i-1]):false; // check whether a previous box exists
    if (prevBox) { } // do something
    else { } // do something else
});

這很好。 但是我還需要檢查數組中每個第四個對象(框)的存在,或更確切地說,檢查一個對象是否在當前對象之前存在三個對象。

這不起作用:

var prevBox = i>0?$(boxes[i-4]):false;

我相信使用jQuery.grep()並檢查(i % 4) == 0是否可能是答案,但是由於我對Javascript的了解有限,所以我不知道如何將其應用於現有的Javascript。

有人可以幫忙嗎? 謝謝!

您不僅可以使用for循環嗎?

for ( var i=0; i< boxes.length; i+=4 )
  {
    // do stuff with boxes[i]
  }

我並不是特別關注JQuery,但在常規JavaScript中可以正常工作。

編輯:您已經稍微重新描述了問題,所以您想對每個項目都采取行動,但要對第四項做一些特定的事情。

var previousTop;
for ( var i=0; i< boxes.length; i++ )
  {
    // do stuff with boxes[i]
    if ( ( (i+1) % 4 ) === 0 )
      {
          previousTop = boxes[i].position.top;
          // do stuff with the fourth item
      }
  }

然后,在執行任何其他操作之前,將在第四個項目中設置范圍更廣的previousTop 然后,當您到達下一個第四個元素時,您的臨時變量中的值將與前一個元素中的值相同,這聽起來與您對以下@patrick dw答案的答復所尋找的內容相似。

您可以在循環中使用模運算符 ,以查看是否處於第四間隔。

問題得到澄清。

var boxes = $('.box'); // creating the array

boxes.each(function(i){
    if( i >= 3 ) {
        var prevBox = boxes.eq( i - 3 );
        var pos = prevBox.position();
        var top = pos.top;
    }
});

使用4作為增量步長而不是通常的1。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM