J'ai un tableau qui ressemble à ceci: var y = [1, 2, 3];
Je voudrais supprimer 2
du tableau y
.
Comment puis-je supprimer une valeur particulière d'un tableau à l'aide de jQuery? J'ai essayé pop()
mais cela supprime toujours le dernier élément.
Un travail JSFIDDLE
Vous pouvez faire quelque chose comme ça:
var y = [1, 2, 2, 3, 2]
var removeItem = 2;
y = jQuery.grep(y, function(value) {
return value != removeItem;
});
Résultat:
[1, 3]
http://snipplr.com/view/14381/remove-item-from-array-with-jquery/
Avec jQuery, vous pouvez effectuer une opération sur une seule ligne comme ceci:
Exemple: http://jsfiddle.net/HWKQY/
y.splice( $.inArray(removeItem, y), 1 );
Utilise le natif .splice()
et jQuery's $.inArray()
.
La méthode jQuery.filter
est utile. Ceci est disponible pour les objets Array
.
var arr = [1, 2, 3, 4, 5, 5];
var result = arr.filter(function(elem){
return elem != 5;
});//result -> [1,2,3,4]
http://jsfiddle.net/emrefatih47/ar0dhvhw/
Dans Ecmascript 6:
let values = [1,2,3,4,5];
let evens = values.filter(v => v % 2 == 0);
alert(evens);
Vous pouvez utiliser nderscore.js . Cela rend vraiment les choses simples.
Dans votre cas, tout le code que vous devrez écrire est -
_.without([1,2,3], 2);
et le résultat sera [1,3].
Cela réduit le code que vous écrivez.
Pas une façon jQuery mais ... Pourquoi ne pas utiliser une manière plus simple. Supprimer le "c" du tableau suivant
var a = ['a','b','c','d']
a.splice(a.indexOf('c'),1);
>["c"]
a
["a", "b", "d"]
Vous pouvez également utiliser: (Remarque: Ne modifiez pas les objets que vous ne possédez pas )
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']
L'ajout est plus simplea.Push('c')
Supprimer un élément du tableau
var arr = ["jQuery", "JavaScript", "HTML", "Ajax", "Css"];
var itemtoRemove = "HTML";
arr.splice($.inArray(itemtoRemove, arr), 1);
//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)
}
}
}
Exemple d'utilisation
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]]
Pour utiliser cette fonction prototype, vous devez le coller dans votre code. Ensuite, vous pouvez l’appliquer à n’importe quel tableau avec "notation par points":
someArr.remove('elem1')
Il n'y a pas de moyen natif de faire cela en Javascript. Vous pouvez utiliser une bibliothèque ou écrire une petite fonction pour le faire à la place: http://ejohn.org/blog/javascript-array-remove/
Ma version de la réponse de user113716. His supprime une valeur si aucune correspondance n'est trouvée, ce qui n'est pas bon.
var y = [1, 2, 3]
var removeItem = 2;
var i = $.inArray(removeItem,y)
if (i >= 0){
y.splice(i, 1);
}
alert(y);
Ceci supprime maintenant 1 élément si une correspondance est trouvée, 0 si aucune correspondance n'est trouvée.
Comment ça fonctionne:
value
dans un array
count
nombre de valeurs commençant à index
, nous voulons donc simplement un count
sur 1
Il y a une solution simple avec l'épissure. Selon W3School , la syntaxe d’épissure est la suivante;
array.splice(index, howmany, item1, ....., itemX)
index Obligatoire. Un entier qui spécifie à quelle position ajouter/supprimer des éléments, utilisez des valeurs négatives pour spécifier la position à partir de la fin du tableau
combien Obligatoire. Le nombre d'éléments à supprimer. Si défini à 0, aucun élément ne sera supprimé
item1, ..., itemX Facultatif. Le ou les nouveaux éléments à ajouter au tableau
Gardez cela à l’esprit, le js suivant extraira un ou plusieurs éléments correspondants du tableau donné s’ils le trouvent, sinon ils ne supprimeraient pas le dernier élément du tableau.
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;
Ou
var itemsFound = $.grep(x, function (elem) {
return elem == item;
}).length;
Donc, la finale devrait ressembler à ceci
x.splice( startItemIndex , itemsFound );
J'espère que cela t'aides.
//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;
Vous pouvez utiliser la fonction .not comme ceci:
var arr = [ 1 , 2 , 3 , 5 , 8];
var searchValue = 2;
var newArr = $(arr).not([searchValue]).get();
Vérifie d'abord si l'élément existe dans le tableau
$.inArray(id, releaseArray) > -1
la ligne ci-dessus renvoie l'index de cet élément s'il existe dans le tableau, sinon il renvoie -1
releaseArray.splice($.inArray(id, releaseArray), 1);
la ligne ci-dessus supprimera cet élément du tableau s'il est trouvé. Pour résumer la logique ci-dessous est le code requis pour vérifier et supprimer l'élément du tableau.
if ($.inArray(id, releaseArray) > -1) {
releaseArray.splice($.inArray(id, releaseArray), 1);
}
else {
releaseArray.Push(id);
}
J'étendrais la classe Array avec une fonction pick_and_remove()
, comme ceci:
var ArrayInstanceExtensions = {
pick_and_remove: function(index){
var picked_element = this[index];
this.splice(index,1);
return picked_element;
}
};
$.extend(Array.prototype, ArrayInstanceExtensions);
Bien que cela puisse paraître un peu prolixe, vous pouvez maintenant appeler pick_and_remove()
sur n'importe quel tableau de votre choix!
Usage:
array = [4,5,6] //=> [4,5,6]
array.pick_and_remove(1); //=> 5
array; //=> [4,6]
Vous pouvez voir tout cela dans l'action à thème Pokemon ici.
J'avais une tâche similaire dans laquelle je devais supprimer plusieurs objets à la fois en fonction d'une propriété des objets du tableau.
Donc après quelques itérations je me retrouve avec:
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;
}
Vous pouvez ensuite appeler la fonction n'importe où dans votre code.
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"!
Cela fonctionne dans tous les cas et évite les problèmes des méthodes ci-dessus. J'espère que ça t'as aidé!
Pour supprimer en toute sécurité 2 du tableau à l'aide de Vanilla JavaScript:
// 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]
Source Polyfill: Mozilla