style por page modificar eliminar elementos elemento div con change jquery arrays

por - Cómo eliminar un valor específico de la matriz usando jQuery



jquery get class value (17)

Primero verifica si el elemento existe en la matriz.

$.inArray(id, releaseArray) > -1

la línea anterior devuelve el índice de ese elemento si existe en la matriz; de lo contrario, devuelve -1

releaseArray.splice($.inArray(id, releaseArray), 1);

ahora arriba de la línea eliminará este elemento de la matriz si se encuentra. Para resumir la lógica a continuación está el código requerido para verificar y eliminar el elemento de la matriz.

if ($.inArray(id, releaseArray) > -1) { releaseArray.splice($.inArray(id, releaseArray), 1); } else { releaseArray.push(id); }

Tengo una matriz que se ve así: var y = [1, 2, 3];

Me gustaría eliminar 2 de la matriz y .

¿Cómo puedo eliminar un valor particular de una matriz usando jQuery? He probado pop() pero eso siempre elimina el último elemento.



Eliminar artículo en la matriz

var arr = ["jQuery", "JavaScript", "HTML", "Ajax", "Css"]; var itemtoRemove = "HTML"; arr.splice($.inArray(itemtoRemove, arr), 1);


Extendería la clase Array con una función pick_and_remove() , así:

var ArrayInstanceExtensions = { pick_and_remove: function(index){ var picked_element = this[index]; this.splice(index,1); return picked_element; } }; $.extend(Array.prototype, ArrayInstanceExtensions);

Si bien puede parecer un poco detallado, ahora puede llamar a pick_and_remove() en cualquier arreglo que desee.

Uso:

array = [4,5,6] //=> [4,5,6] array.pick_and_remove(1); //=> 5 array; //=> [4,6]

Puedes ver todo esto en la acción temática de pokemon here.


Hay una solución simple con empalme. De acuerdo con .splice() sintaxis de empalme está siguiendo;

array.splice(index, howmany, item1, ....., itemX)

índice requerido. Un entero que especifica en qué posición agregar / eliminar elementos, usar valores negativos para especificar la posición desde el final de la matriz

Howmany Required. El número de elementos a eliminar. Si se establece en 0, no se eliminarán los elementos

item1, ..., itemX Opcional. Los nuevos elementos que se agregarán a la matriz

Tenlo en cuenta, los siguientes js sacarán uno o más elementos coincidentes de la matriz dada si se encuentran, de lo contrario no eliminaría el último elemento de la matriz.

var x = [1,2,3,4,5,4,4,6,7]; var item = 4; var startItemIndex = $.inArray(item, x); var itemsFound = x.filter(function(elem){ return elem == item; }).length;

O

var itemsFound = $.grep(x, function (elem) { return elem == item; }).length;

Así que la final debería parecerse a la siguiente.

x.splice( startItemIndex , itemsFound );

Espero que esto ayude.


Mi versión de la respuesta del usuario 113716. Su elimina un valor si no se encuentra ninguna coincidencia, lo que no es bueno.

var y = [1, 2, 3] var removeItem = 2; var i = $.inArray(removeItem,y) if (i >= 0){ y.splice(i, 1); } alert(y);

Esto ahora elimina 1 elemento si se encuentra una coincidencia, 0 si no se encuentra ninguna coincidencia.

Cómo funciona:

  • $ .inArray (valor, matriz) es una función jQuery que encuentra el primer índice de un value en una array
  • Lo anterior devuelve -1 si no se encuentra el valor, así que verifique que i sea un índice válido antes de que realicemos la eliminación. Eliminar el índice -1 significa eliminar el último, lo que no es útil aquí.
  • .splice (índice, cuenta) elimina el número de valores de cuenta que comienzan en el index , por lo que solo queremos una count de 1

No es una forma jQuery pero ... ¿Por qué no usar una forma más simple? Elimine ''c'' de la siguiente matriz

var a = [''a'',''b'',''c'',''d''] a.splice(a.indexOf(''c''),1); >["c"] a ["a", "b", "d"]

También puede usar: (Nota para mí: no modifique los objetos que no posee )

Array.prototype.remove = function(v) { this.splice(this.indexOf(v) == -1 ? this.length : this.indexOf(v), 1); } var a = [''a'',''b'',''c'']; a.remove(''c''); //value of "a" is now [''a'',''b'']

Añadir es más simple a.push(''c'')



Para eliminar de forma segura 2 de la matriz con JavaScript de vainilla:

// Define polyfill for browsers that don''t natively support Array.indexOf() if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(searchElement, fromIndex) { var k; if (this===null) { throw new TypeError(''"this" is null or not defined''); } var O = Object(this), len = O.length >>> 0; if (len===0) return -1; var n = +fromIndex || 0; if (Math.abs(n)===Infinity) n = 0; if (n >= len) return -1; k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); while (k < len) { if (k in O && O[k]===searchElement) return k; ++k; } return -1; }; } // Remove first instance of 2 from array if (y.indexOf(2) > -1) { y.splice(y.indexOf(2), 1); } /* To remove all instances of 2 from array, change ''if'' to ''while'': while (y.indexOf(2) > -1) { y.splice(y.indexOf(2), 1); } */ console.log(y); // Returns [1, 3]

Fuente de Polyfill: Mozilla


Puedes usar underscore.js . Realmente hace las cosas simples.

En tu caso, el código que deberás corregir es:

_.without([1,2,3], 2);

y el resultado será [1,3].

Reduce el código que escribes.


Puedes usar. No funciona así:

var arr = [ 1 , 2 , 3 , 5 , 8]; var searchValue = 2; var newArr = $(arr).not([searchValue]).get();


Tuve una tarea similar en la que necesitaba eliminar varios objetos a la vez en función de una propiedad de los objetos de la matriz.

Así que después de algunas iteraciones termino con:

list = $.grep(list, function (o) { return !o.IsDeleted });




/** SUBTRACT ARRAYS **/ function subtractarrays(array1, array2){ var difference = []; for( var i = 0; i < array1.length; i++ ) { if( $.inArray( array1[i], array2 ) == -1 ) { difference.push(array1[i]); } } return difference; }

A continuación, puede llamar a la función en cualquier lugar en su código.

var I_like = ["love", "sex", "food"]; var she_likes = ["love", "food"]; alert( "what I like and she does''t like is: " + subtractarrays( I_like, she_likes ) ); //returns "Naughty :P"!

Esto funciona en todos los casos y evita los problemas en los métodos anteriores. ¡Espero que ayude!


//This prototype function allows you to remove even array from array Array.prototype.remove = function(x) { var i; for(i in this){ if(this[i].toString() == x.toString()){ this.splice(i,1) } } }

Ejemplo de uso

var arr = [1,2,[1,1], ''abc'']; arr.remove([1,1]); console.log(arr) //[1, 2, ''abc''] var arr = [1,2,[1,1], ''abc'']; arr.remove(1); console.log(arr) //[2, [1,1], ''abc''] var arr = [1,2,[1,1], ''abc'']; arr.remove(''abc''); console.log(arr) //[1, 2, [1,1]]

Para usar esta función de prototipo necesitas pegarla en tu código. Luego puedes aplicarlo a cualquier matriz con ''notación de puntos'':

someArr.remove(''elem1'')


//in case somebody needs something like this: multidimensional array (two items) var ar = [[0,''a''],[1,''b''],[2,''c''],[3,''d''],[4,''e''],[5,''f'']]; var removeItem = 3; ar = jQuery.grep(ar, function(n) { return n[0] != removeItem; //or n[1] for second item in two item array }); ar;