jquery-Version von array.contains

Lesezeit: 2 Minuten

Benutzer-Avatar
Morgancodes

Kann jQuery ein Array auf das Vorhandensein eines Objekts testen (entweder als Teil der Kernfunktionalität oder über ein verfügbares Plugin)?

Außerdem suche ich sowas array.remove, wodurch ein bestimmtes Objekt aus einem Array entfernt würde. Kann jQuery das für mich erledigen?

Benutzer-Avatar
Prestaul

jQuery.inArray gibt den ersten Index zurück, der mit dem gesuchten Element übereinstimmt, oder -1, wenn es nicht gefunden wird:

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

Sie sollten kein array.remove benötigen. Spleißen verwenden:

theArray.splice(startRemovingAtThisIndex, numberOfItemsToRemove);

Oder Sie können ein “Entfernen” mit durchführen jQuery.grep util:

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

  • Danke Prestaul. Die Sache ist, dass ich den Index des Objekts, das ich entfernen muss, nicht kenne, also denke ich, dass ich immer noch array.remove brauche.

    – Morgancodes

    16. Januar 2009 um 15:28 Uhr

  • Oh cool. Genau dort in den Dokumenten unter “Dienstprogramme”. “RTFM” wäre eine akzeptable Antwort gewesen 🙂 danke, dass Sie mich darauf hingewiesen haben. Ich denke, jquery.grep kann mir die Entfernungsfunktion geben, die ich brauche.

    – Morgancodes

    16. Januar 2009 um 15:33 Uhr

  • @morgancodes, das wird es in der Tat! Ich habe das zu meiner Antwort hinzugefügt, als Sie kommentierten.

    – Vorstaul

    16. Januar 2009 um 15:36 Uhr

  • auch: theArray.splice($.inArray(value, theArray), 1);

    – zurückerstattet

    16. Januar 2009 um 16:51 Uhr

  • Übrigens: “theArray.splice($.inArray(value, theArray), 1);” funktioniert nur, wenn das Element in der Liste ist.

    – Emir

    22. Januar 2010 um 0:36 Uhr

Wenn Ihre Liste eine Liste von Elementen enthält, können Sie verwenden jQuery.not oder jQuery.filter um Ihr “array.remove” zu tun. (Antwort wurde aufgrund des hohen Google-Scores Ihrer ursprünglichen Frage hinzugefügt).

  • “(Antwort wegen des hohen Google-Scores Ihrer ursprünglichen Frage hinzugefügt)” ??!! – Was ist mit “Antwort hinzugefügt, weil ich helfen möchte” ??

    – Jonathan

    27. März 2012 um 14:02 Uhr


  • Ich glaube nicht, dass ich die ursprüngliche Frage beantworte, aber es sind Informationen, die für jemanden nützlich sein könnten, dessen Suchen hier landen.

    – Bryan Larsen

    27. März 2012 um 19:13 Uhr

Ich habe einen Weg gefunden, um das Objekt zu entfernen:

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

Dies ist nicht jQuery, aber in einer Zeile können Sie Arrays mit einer praktischen „Contains“-Methode versehen. Ich finde, das hilft bei der Lesbarkeit (insbesondere für Python-Leute).

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

Beispiel Verwendung

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

Ähnlich für entfernen

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]

Oder, wenn Sie möchten, dass das entfernte Ding und nicht das geänderte Array zurückgegeben wird, dann

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]

1283810cookie-checkjquery-Version von array.contains

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy