2013-07-11 109 views
1

我試圖理解我在這裏出錯的地方。說我有一個數組:拼接函數來擺脫數組中的第6/7條

result = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]  

我想擺脫我的數組中的每6個條目,離開第七在那裏,去一個。實際上,我希望擺脫我陣列中值的六分之七。我認爲拼接()可能是完美的,但不知何故,下面的代碼似乎並沒有工作。有什麼建議麼?

非常感謝大家!

function random_select() 
    { 
     for(var i=0; i < result.length; i+7) 
     { 
     result.splice[i,6]; 

     } 
    }; 
+2

幾個問題:(a)您在修改數組的同時從頭到尾迭代它。你必須以*倒序*的方式迭代它。 (b)你永遠不會推進循環索引。 「我+ 7」應該是「我+ = 7」。 (c)'splice'是一個函數,它必須被稱爲'splice(x,y)'而不是'splice [x,y]'。 –

+0

將'i + 1'更改爲'i ++',並將'result.splice [i,6]'更改爲'result.splice(i + 1,6)'。由於數組發生了變異並重新編制索引,因此當前索引將成爲'.splice()'之後的下一個項目。相反,我們在下一個索引處開始突變,所以您只需要移出當前索引以達到「7」的下一個倍數。如果你需要刪除'0',在循環後添加一個'result.shift()'。 *(重寫我以前的評論。)* –

回答

1

試試這個:

var result = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; 
for (var i = 0; i < result.length; i++) result.splice(i, 6); 

這將:

  1. 首先拆下[0, 1, 2, 3, 4, 5],讓[6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]是。
  2. 下一步刪除[7, 8, 9, 10, 11, 12]並讓[13, 14, 15, 16]是。
  3. 最後刪除[13, 14, 15, 16]

因此結果是[6, 13]。這是你想要的嗎?

+0

嘿阿迪特,沿着菲利克斯和列車的主張做了完美的工作,對我來說,感謝一堆! – Max