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 ça?
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.
Vous pouvez récupérer les premier et dernier éléments en utilisant le tableau destructuring avec un splat:
[first, ..., last] = array
Cette utilisation de splat est prise en charge dans CoffeeScript> = 1.7.0.
La manière Vanilla d'accéder au premier et au dernier élément d'un tableau est la même que dans JS: utiliser l'index 0
et length - 1
:
console.log array[0], array[array.length - 1]
CoffeeScript vous permet d'écrire quelques expressions de déstructuration de tableau Nice:
[first, mid..., last] = array
console.log first, last
Mais je ne pense pas que cela en vaille la peine si vous n'utilisez pas les éléments du milieu.
Underscore.js a des méthodes d'aide first
et last
qui peuvent rendre cela plus semblable à l'anglais (je ne veux pas utiliser l'expression "auto-explicative" car je pense que tout programmeur comprendrait l'indexation des tableaux). Ils sont faciles à ajouter aux objets Array
si vous ne voulez pas utiliser Underscore 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 =, faire):
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
Ces fonctions vous permettent également d'obtenir le n premier ou dernier élément d'un tableau. Si vous n'avez pas besoin de cette fonctionnalité, l'implémentation serait beaucoup plus simple (juste la branche else
essentiellement).
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
Le chemin le plus court est iciarray[-1..]
Voir ce fil
https://github.com/jashkenas/coffee-script/issues/156
Vous pouvez utiliser simplement:
[..., last] = array
Vous pouvez utiliser slice
pour obtenir dernier élément. 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é en
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 element
actuel lors de l'itération à travers le tableau à l'aide de for...in
De Coffeescript. Consultez le code suivant, remplacez 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