48 votes

Supprimer une valeur d'un tableau dans CoffeeScript

J'ai un tableau

array = [..., "Hello", "World", "Again", ...]

Comment pourrais-je vérifier si le "Monde" est dans le tableau? Puis le supprimer s'il existe? Et de disposer d'une référence à "Monde"?

Parfois, peut-être, je veux correspondre à un mot avec une regexp et dans ce cas je ne sais pas exactement de la chaîne, donc j'ai besoin d'avoir une référence à la Chaîne correspondante. Mais dans ce cas je sais pour sûr que c'est "le Monde", ce qui rend plus simple.

Merci pour les suggestions. J'ai trouvé une façon cool de faire ça:

http://documentcloud.github.com/underscore

73voto

Ricardo Tomasi Points 13398

filter() est également une option:

 arr = [..., "Hello", "World", "Again", ...]

newArr = arr.filter (word) -> word isnt "World"
 

62voto

minitech Points 87225

array.indexOf("World") obtiendra l'indice de "World" ou -1 s'il n'existe pas. array.splice(indexOfWorld, 1) supprimera "World" de la baie.

17voto

Alvaro Lourenço Points 768

Car c'est un besoin si naturel, je crée souvent des prototypes de mes tableaux avec une méthode remove(args...) .

Ma suggestion est d'écrire ceci quelque part:

 Array.prototype.remove = (args...) ->
  output = []
  for arg in args
    index = @indexOf arg
    output.push @splice(index, 1) if index isnt -1
  output = output[0] if args.length is 1
  output
 

Et utilisez comme ça n'importe où:

 array = [..., "Hello", "World", "Again", ...]
ref = array.remove("World")
alert array # [..., "Hello", "Again",  ...]
alert ref   # "World"
 

De cette façon, vous pouvez également supprimer plusieurs éléments en même temps:

 array = [..., "Hello", "World", "Again", ...]
ref = array.remove("Hello", "Again")
alert array # [..., "World",  ...]
alert ref   # ["Hello", "Again"]
 

15voto

catvir Points 106

Vérification si "World" est dans le tableau:

 "World" in array
 

Suppression s'il existe

 array = (x for x in array when x != 'World')
 

ou

 array = array.filter (e) -> e != 'World'
 

Garder la référence (c'est le plus court que j'ai trouvé -! .Push est toujours faux depuis .push> 0)

 refs = []
array = array.filter (e) -> e != 'World' || !refs.push e
 

8voto

xpou Points 91

Essaye ça :

 filter = ["a", "b", "c", "d", "e", "f", "g"]

#Remove "b" and "d" from the array in one go
filter.splice(index, 1) for index, value of filter when value in ["b", "d"]
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X