Yo tengo:
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
Quiero poder hacer algo como:
array.remove("B");
pero no hay función de eliminación. ¿Cómo logro esto?
Yo tengo:
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
Quiero poder hacer algo como:
array.remove("B");
pero no hay función de eliminación. ¿Cómo logro esto?
Respuestas:
De hecho, estoy actualizando este hilo con una solución de 1 línea más reciente:
let arr = ['A', 'B', 'C'];
arr = arr.filter(e => e !== 'B'); // will return ['A', 'C']
La idea es básicamente filtrar la matriz seleccionando todos los elementos diferentes al elemento que desea eliminar.
Nota: eliminará todas las ocurrencias.
EDITAR:
Si desea eliminar solo la primera ocurrencia:
t = ['A', 'B', 'C', 'B'];
t.splice(t.indexOf('B'), 1); // will return ['B'] and t is now equal to ['A', 'C', 'B']
Recorra la lista en orden inverso y use el .splice
método.
var array = ['A', 'B', 'C']; // Test
var search_term = 'B';
for (var i=array.length-1; i>=0; i--) {
if (array[i] === search_term) {
array.splice(i, 1);
// break; //<-- Uncomment if only the first term has to be removed
}
}
El orden inverso es importante cuando se deben eliminar todas las apariciones del término de búsqueda. De lo contrario, el contador aumentará y omitirá elementos.
Cuando solo se debe eliminar la primera aparición, lo siguiente también funcionará:
var index = array.indexOf(search_term); // <-- Not supported in <IE9
if (index !== -1) {
array.splice(index, 1);
}
0
no es automáticamente más rápida como lo es, digamos, C. Siempre que guarde el límite en caché, por supuesto, lo que complicaría las cosas si continúa después del primer partido (pero no si se detiene).
Lista de One Liners
Resolvamos este problema para esta matriz:
var array = ['A', 'B', 'C'];
1. Elimine solo el primero: Use Si está seguro de que el artículo existe
array.splice(array.indexOf('B'), 1);
2. Elimine solo el último: Use Si está seguro de que el artículo existe
array.splice(array.lastIndexOf('B'), 1);
3. Eliminar todas las ocurrencias:
array = array.filter(v => v !== 'B');
Necesita encontrar la ubicación de lo que está buscando y .indexOf()
luego eliminarlo con.splice()
function remove(arr, what) {
var found = arr.indexOf(what);
while (found !== -1) {
arr.splice(found, 1);
found = arr.indexOf(what);
}
}
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
remove(array, 'B');
alert(array);
Esto se encargará de todos los sucesos.
Uncaught ReferenceError: array is not defined
. ¿Qué está mal?
.indexOf()
un poco más. Si pasa found
como segundo argumento a la .indexOf()
llamada dentro del ciclo while , los elementos en la matriz que ya se verificaron y terminaron no siendo iguales no se verifican nuevamente: found = arr.indexOf(what, found);
Simplemente
array.splice(array.indexOf(item), 1);
-1
si no se encuentra nada y, ¡ay !, el empalme eliminará 1 elemento del final de la matriz
Solución simple (ES6)
Si no tienes un elemento duplicado
Array.prototype.remove = function(elem) {
var indexElement = this.findIndex(el => el === elem);
if (indexElement != -1)
this.splice(indexElement, 1);
return this;
};
Tienes que escribir tu propio eliminar. Puede recorrer la matriz, tomar el índice del elemento que desea eliminar y usarsplice
para eliminarlo.
Alternativamente, puede crear una nueva matriz, recorrer la matriz actual y, si el objeto actual no coincide con lo que desea eliminar, colóquela en una nueva matriz.
utilizar:
array.splice(2, 1);
Esto elimina un elemento de la matriz, comenzando en el índice 2 (tercer elemento)
array.splice(2,1)
que elimina 1 elemento en el índice 2 de la matriz. consulte https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice para obtener más detalles
use array.splice
/*array.splice(index , howMany[, element1[, ...[, elementN]]])
array.splice(index) // SpiderMonkey/Firefox extension*/
array.splice(1,1)
Fuente: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
array
y splice
tiene que ser un punto.
.indexOf()
y.splice()
debería hacer el truco. O tal vez, en su defecto,.filter()
.