2016-12-24 56 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這只是一個未使用的參數,這就是爲什麼我們在那裏使用下劃線。這沒有什麼特別的意義。 –