2016-12-24 6 views
8

Ich habe ein Array und möchte nur jedes dritte Element als neues Array (beginnend bei 0) zurückgeben.So nehmen Sie jedes dritte Element eines Arrays

Zum Beispiel:

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

Dies ist die Art, wie ich zur Zeit tue dies:

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

Gibt es eine Möglichkeit, dies mit arr.map zu tun? Gibt es einfach einen einfacheren Weg?

+0

'.map()' wäre keine gute Wahl, da es eine 1 für 1 Zuordnung zurückgibt. Sie könnten jedoch '.reduce()' verwenden. – Pointy

+0

@Pointy Warum würde ich reduzieren für das, was im Wesentlichen ein Filter ist? –

+0

@torazaburo sicher, das ist wahr. Ich denke normalerweise, dass "Filter" etwas mit der intrinsischen Natur der Werte in der Liste zu tun hat, aber das ist nur mein Problem :) – Pointy

Antwort

11

können Sie alternativ mit ihm tun ein filter,

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

Aber denken Sie daran, für Schleife grundlegende Verwendung ist etwas effizienter als andere in manchen Kontexten.

+0

Was bedeutet '_' im Ausdruck' (_, i) '? – StepUp

+1

@StepUp Das ist nur ein unbenutztes Argument, deshalb haben wir dort einen Unterstrich verwendet. Das hat keine besondere Bedeutung. –

Verwandte Themen