2014-08-27 226 views
-1

我有一個數組arr = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'],我想讓每個第三個值都變成一個新的arr2 = ['three', 'six', 'nine']從數組中獲取第三個值

我試過for循環但我無法讓它正常工作。什麼是使用jQuery或JavaScript來做到這一點的最佳方式?

+2

尋找「模運算符」 – elclanrs 2014-08-27 20:24:43

+4

你應該告訴你試過這樣我們就可以幫點你在哪裏錯了什麼。 – 2014-08-27 20:25:22

+0

可能重複的[如何使用ng-repeat與過濾器和$索引?](http://stackoverflow.com/questions/20858395/how-to-use-ng-repeat-with-filter-and-index) – Martin 2014-08-27 21:09:06

回答

6

您可以使用.grep功能

var arr2 = $.grep(arr, function(n, i) { 
    return i % 3 == 2; 
}); 

fiddle here

+0

很好地工作,謝謝!我需要了解更多關於'$ .grep'的信息。 – Steve 2014-08-27 20:32:47

+1

@Steve:'$ .grep'是純JS中的'filter'。如果您不需要支持古代瀏覽器,請使用'filter'。 – elclanrs 2014-08-27 20:33:52

+5

@Steve:另外請注意,使用'.grep'(或'filter')會觸及數組中的每個元素。既然你知道你只需要每個第三個元素,那麼用'3'增加的常規'for'循環會更有效率(參見Josh的答案)。不是說它只有9個元素可能會有很大的不同。 – 2014-08-27 20:36:34

9

您可以使用for循環,如果你想!

考慮以下幾點:

var arr1 = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']; 
var arr2 = []; 

for (var i = 2; i < arr1.length; i += 3) { 
    arr2.push(arr1[i]); 
} 

arr2; // ["three", "six", "nine"] 
+0

耶和我的一樣,我得到-2 – 2014-08-27 20:31:04

+4

@ bto.rdz這是因爲你的答案不會產生OP_所要求的結果。 – 2014-08-27 20:32:26

+2

@ bto.rdz:這不是同一個答案。即使你的答案是正確的,這仍然會更有效率。 – 2014-08-27 20:33:51

相關問題