2011-05-27 112 views
0

array ref.length = 7(0 - 6),我想嘗試將ref [0] ['x']與ref [1] ['x']匹配我這樣做:javascript數組for循環i + 1返回undefined

for(var i=0;i<ref.length;i++){ 
     if(ref[i]['x'] != ref[i+1]['x'] && ref[i+1]['x'].length > 0) 
     //do something 
    } 

for循環一路遍歷數組數6那麼,元件6 + 1是空白的,所以我得到的if語句行說裁判的錯誤[I + 1]是未定義....

有沒有更好的方法來做到這一點?

回答

2
for (var i=0; i<ref.length-1; i++) { // Note the "-1". 

當你使用你仍然在邊界指數i+1這種方式。

1

for (var i = 0; i < ref.length - 1; i++

+5

我是唯一一個喜歡前戲,也許在演出前後有點談話的人? – 2011-05-28 14:04:53

3

更好:

for (var i=ref.length-2;i>=0;i--) 

的JavaScript將評估每個反覆的條件,所以它通常最好倒退代替。有了這個構造「ref.length」只被評估一次。另一種替代方法我喜歡將執行相同的:

var i=ref.length-1; 
while (i--) { 

} 

(通常你會i=ref.length-1在第一示例中,與i=ref.length在第二,但你試圖留比數組長度的一個更小)。

0

什麼:

for(var i=0;i<ref.length-1;i++){ 
0

如果只是用ref.length-1將不是解決問題了嗎?我可能不完全明白你在問什麼。

0

這是一個簡單的解決方案。 只需再次計數櫃檯。

if(ref[i]['x'] != ref[++i]['x'] && ref[++i]['x'].length > 0)