2014-08-27 149 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

相关问题