values remove property objects from duplicated duplicate delete array javascript node.js coffeescript

property - remove duplicated array javascript



Eliminar un valor de una matriz en CoffeeScript (8)

CoffeeScript + jQuery: eliminar uno, no todos

arrayRemoveItemByValue = (arr,value) -> r=$.inArray(value, arr) unless r==-1 arr.splice(r,1) # return arr console.log arrayRemoveItemByValue([''2'',''1'',''3''],''3'')

Tengo una matriz:

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

¿Cómo puedo verificar si "Mundo" está en la matriz? Entonces quítalo si existe? ¿Y tener una referencia al "mundo"?

A veces, tal vez quiera hacer coincidir una palabra con una expresión regular y en ese caso no sabré la cadena exacta, por lo que necesito tener una referencia a la cadena coincidente. Pero en este caso, estoy seguro de que es "Mundo" lo que lo hace más simple.

Gracias por las sugerencias. Encontré una manera genial de hacerlo:

http://documentcloud.github.com/underscore


Comprobando si "Mundo" está en la matriz:

"World" in array

Eliminando si existe

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

o

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

Mantener la referencia (eso es lo más corto que he encontrado -! .Push siempre es falso desde .push> 0)

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


Para esto es una necesidad tan natural, a menudo prototipo mis arreglos con un método remove(args...) .

Mi sugerencia es escribir esto en algún lugar:

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

Y usar así en cualquier lugar:

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

De esta manera también puedes eliminar varios elementos al mismo tiempo:

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


Prueba esto :

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"]


Una combinación de algunas respuestas:

Array::remove = (obj) -> @filter (el) -> el isnt obj



_.without() función _.without() de la biblioteca underscorejs es una opción buena y limpia en caso de que desee obtener una nueva matriz:

_.without([1, 2, 1, 0, 3, 1, 4], 0, 1) [2, 3, 4]


filter() también es una opción:

arr = [..., "Hello", "World", "Again", ...] newArr = arr.filter (word) -> word isnt "World"