2016-12-24 53 views
8

我有一个数组的每3个要素,只想返回每三个元素作为新的数组(从0开始)。如何采取一个数组

例如:

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; 
let newArr = [1, 4, 7]; 

这是方法我目前这样做:

let newArr = []; 
for(let x = 0; x < arr.length; x += 3) { 
    newArr.push(arr[x]); 
} 
return newArr; 

有没有办法用arr.map做到这一点?有没有更简单的方法来做到这一点?

+0

'.MAP()'不会是一个很好的选择,因为它的目的是返回一个1 1映射。尽管你可以使用'.reduce()'。 – Pointy

+0

@Pointy为什么我会使用reduce实质上是一个过滤器? – 2016-12-24 13:04:28

+0

@torazaburo肯定,那是真的。我通常认为“过滤器”与列表中的值的内在本质有关,但这就是我的问题:) – Pointy

回答

11

您也可以用filter做到这一点,

let newArr = arr.filter((_,i) => i % 3 == 0); 

但要记住,使用基本的循环是位比别人在某些情况下更有效。

+0

表达式'(_,i)'中的'_'是什么意思? – StepUp

+1

@StepUp这只是一个未使用的参数,这就是为什么我们在那里使用下划线。这没有什么特别的意义。 –

相关问题