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:
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
array.indexOf("World")
obtendrá el índice de "World"
o -1
si no existe. array.splice(indexOfWorld, 1)
eliminará "World"
de la matriz.
_.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"