arrays - ultima - Obtención del primer y último elemento de una matriz en CoffeeScript
ultimo windows (6)
El camino más corto está aquí.
array[-1..]
Ver este hilo
https://github.com/jashkenas/coffee-script/issues/156
Si dijera que tengo una matriz y me gustaría iterar a través de la matriz, pero hacer algo diferente al primer y último elemento. ¿Cómo debo hacer eso?
Tomando el siguiente código como ejemplo, ¿cómo puedo alertar al elemento a y e ?
array = [a,b,c,d,e]
for element in array
console.log(element)
Gracias.
La forma original de acceder al primer y último elemento de una matriz es la misma que en JS realmente: usando el índice 0
y la length - 1
:
console.log array[0], array[array.length - 1]
CoffeeScript te permite escribir algunas expresiones agradables de desestructuración de matrices:
[first, mid..., last] = array
console.log first, last
Pero no creo que valga la pena si no vas a usar los elementos medios.
Underscore.js tiene algunos first
y last
métodos de ayuda que pueden hacer esto más parecido al inglés (no quiero usar la frase "autoexplicativa", ya que creo que cualquier programador entendería la indexación de matrices). Son fáciles de agregar a los objetos de la Array
si no quiere usar el subrayado y no le importa que se contamine el espacio de nombres global (esto es lo que hacen otras bibliotecas, como Sugar.js ):
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()
Actualizar
Estas funciones también le permiten obtener los n primeros o últimos elementos de una matriz. Si no necesita esa funcionalidad, entonces la implementación sería mucho más simple (básicamente la rama else
básicamente).
Actualización 2
CoffeeScript > = 1.7 le permite escribir:
[first, ..., last] = array
sin generar un array innecesario con los elementos del medio: D
Puede obtener el element
y el index
del element
actual al iterar a través de la matriz utilizando Coffeescript''s for...in
. Consulte el siguiente código, reemplace special_process_for_element
y normal_process_for_element
con su código.
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
Aquí hay un código de trabajo
Puede recuperar los primeros y últimos elementos utilizando la destructuring matrices con un splat:
[first, ..., last] = array
Este uso de splat se admite en CoffeeScript> = 1.7.0.
Puedes usar slice
para obtener el último elemento . En javascript, slice
puede pasar un número negativo como -1 como argumentos.
Por ejemplo:
array = [1, 2, 3 ]
console.log "first: #{array[0]}"
console.log "last: #{array[-1..][0]}"
ser compilado en
var array;
array = [1, 2, 3];
console.log("first: " + array[0]);
console.log("last: " + array.slice(-1)[0]);
Puedes usar solo:
[..., last] = array