Obtenir le premier et le dernier élément d'un tableau dans CoffeeScript
Si disons que j'ai un tableau et que je voudrais parcourir le tableau, mais faire quelque chose de différent du premier et du dernier élément. Comment dois-je faire?
En prenant le code ci-dessous comme exemple, comment puis-je alerter l'élément a et e?
array = [a,b,c,d,e]
for element in array
console.log(element)
Merci.
6 réponses
, Vous pouvez récupérer les premier et dernier éléments en utilisant la matrice déstructuration, avec un splat:
[first, ..., last] = array
Cette utilisation splat est prise en charge dans CoffeeScript >= 1.7.0.
La façon vanille d'accéder au premier et au dernier élément d'un tableau est la même que dans JS really: en utilisant l'index 0
et length - 1
:
console.log array[0], array[array.length - 1]
CoffeeScript vous permet d'écrire de belles expressions de déstructuration de Tableau:
[first, mid..., last] = array
console.log first, last
Mais je ne pense pas que cela en vaut la peine si vous n'utilisez pas les éléments du milieu.
Soulignement.js a une aide first
et last
méthodes qui peuvent rendre cela plus anglais (Je ne veux pas utiliser la phrase "self-explanatory" comme je pense que tout programmeur comprendrait l'indexation de tableau). Ils sont faciles à ajouter aux objets Array
Si vous ne voulez pas utiliser le trait de soulignement et que cela ne vous dérange pas de polluer l'espace de noms global (c'est ce que d'autres bibliothèques, comme Sugar.js, ne):
Array::first ?= (n) ->
if n? then @[0...(Math.max 0, n)] else @[0]
Array::last ?= (n) ->
if n? then @[(Math.max @length - n, 0)...] else @[@length - 1]
console.log array.first(), array.last()
Mise à Jour
Cette fonction vous permet également d'obtenir lesN premiers OU derniers éléments d'un tableau. Si vous n'avez pas besoin de cette fonctionnalité l'implémentation serait beaucoup plus simple (juste la branche else
fondamentalement).
Mise à Jour 2
CoffeeScript >= 1.7 vous permet d'écrire:
[first, ..., last] = array
Sans générer un tableau inutile avec les éléments du milieu: d
La voie La plus courte est ici array[-1..]
Voir ce fil
https://github.com/jashkenas/coffee-script/issues/156
Vous pouvez utiliser slice
pour obtenir , dernier élément de. En javascript, slice
peut passer un nombre négatif comme -1 comme arguments.
Par exemple:
array = [1, 2, 3 ]
console.log "first: #{array[0]}"
console.log "last: #{array[-1..][0]}"
Être compilé dans
var array;
array = [1, 2, 3];
console.log("first: " + array[0]);
console.log("last: " + array.slice(-1)[0]);
Vous pouvez obtenir le element
et le index
du courant element
lors de l'itération dans le tableau en utilisant for...in
de Coffeescript. Voir le code suivant, remplacez les special_process_for_element
et normal_process_for_element
par votre code.
array = [a, b, c, d]
FIRST_INDEX = 0
LAST_INDEX = array.length - 1
for element, index in array
switch index
when FIRST_INDEX, LAST_INDEX
special_process_for_element
else
normal_process_for_element
Voici un code de travail