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]