jQuery-versie van array.contains

Kan jQuery een array testen op de aanwezigheid van een object (als onderdeel van de kernfunctionaliteit of via een beschikbare plug-in)?

Ook ben ik op zoek naar iets als array.remove, waarmee een bepaald object uit een array zou worden verwijderd. Kan jQuery dit voor mij aan?


Antwoord 1, autoriteit 100%

jQuery.inArrayretourneert de eerste index die overeenkomt met het item waarnaar u zocht of – 1 als het niet wordt gevonden:

if($.inArray(valueToMatch, theArray) > -1) alert("it's in there");

Je zou geen array.remove nodig moeten hebben. Gebruik splitsing:

theArray.splice(startRemovingAtThisIndex, numberOfItemsToRemove);

Of u kunt een “verwijdering” uitvoeren met het jQuery.grep-hulpprogramma:

var valueToRemove = 'someval';
theArray = $.grep(theArray, function(val) { return val != valueToRemove; });

Antwoord 2, autoriteit 3%

Als uw lijst een lijst met elementen bevat, kunt u jQuery.notof jQuery.filterom uw “array.remove” uit te voeren. (Antwoord toegevoegd vanwege de hoge Google-score van uw oorspronkelijke vraag).


Antwoord 3

Ik heb een manier gevonden om het object te verwijderen:

foot = { bar : 'test'};
delete foot[bar];

Antwoord 4

Dit is geen jQuery, maar in één regel kun je een handige ‘bevat’-methode aan arrays toevoegen. Ik vind dat dit helpt bij de leesbaarheid (vooral voor python-mensen).

Array.prototype.contains = function(a){ return this.indexOf(a) != -1 }

voorbeeld gebruik

> var a = [1,2,3]
 > a.contains(1)
true
 > a.contains(4)
false

Ook voor verwijderen

Array.prototype.remove = function(a){if (this.contains(a)){ this.splice(this.indexOf(a),1)}; return this}
> var a = [1,2,3]
> a.remove(2)
[1,3]

Of, als je wilt dat het het verwijderde ding teruggeeft in plaats van de gewijzigde array, dan

Array.prototype.remove = function(a){if (this.contains(a)){ return this.splice(this.indexOf(a),1)}}
> var a = [1,2,3]
> a.remove(2)
[2]
> a
[1,3]

Other episodes