Der folgende Code stammt von jQuery UI Autocomplete:
var projects = [
{
value: "jquery",
label: "jQuery",
desc: "the write less, do more, JavaScript library",
icon: "jquery_32x32.png"
},
{
value: "jquery-ui",
label: "jQuery UI",
desc: "the official user interface library for jQuery",
icon: "jqueryui_32x32.png"
},
{
value: "sizzlejs",
label: "Sizzle JS",
desc: "a pure-JavaScript CSS selector engine",
icon: "sizzlejs_32x32.png"
}
];
Zum Beispiel möchte ich den desc-Wert von jquery-ui ändern . Wie kann ich das machen?
Gibt es außerdem eine schnellere Möglichkeit, die Daten abzurufen? Ich meine, dem Objekt einen Namen geben, um seine Daten abzurufen, genau wie das Objekt in einem Array? Es wäre also so etwas wiejquery-ui.jquery-ui.desc = ....
javascript
jquery
arrays
qinHaiXiang
quelle
quelle
projects["jquery-ui"].desc
. Wäre das die Mühe wert, nur um eine schönere Syntax zu erhalten?Antworten:
Sie müssen im Array wie folgt suchen:
und benutze es gerne
AKTUALISIEREN:
Um es schneller zu bekommen:
(Laut Frédérics Kommentar sollten Sie keinen Bindestrich im Objektschlüssel verwenden, oder Sie sollten die Notation "jquery-ui" und projects ["jquery-ui"] verwenden.)
quelle
-
im Objektnamen nicht. Sie müssten schreiben"jquery-ui": {}
undprojects["jquery-ui"].desc
jeweils.Es ist ganz einfach
findIndex
Methode.yourArray[indexThatyouFind]
quelle
()
derfindIndex
Methode?[...myArray.slice(0, objIndex), Object.assign({}, myArray[objIndex], myArray.slice(objIndex + 1))]
[...myArray.slice(0, objIndex), Object.assign({}, myArray[objIndex], ...myArray.slice(objIndex + 1))]
? Ich denke du vermisst die zweiten Ellipsen.ES6- Weg, ohne die Originaldaten zu mutieren .
quelle
Die beste Lösung dank ES6.
Dies gibt ein neues Array mit einer ersetzten Beschreibung für das Objekt zurück, das einen Wert gleich "jquery-ui" enthält.
quelle
Mit $ .each () können Sie das Array durchlaufen und das Objekt suchen , an dem Sie interessiert sind:
quelle
Die Verwendung von map ist die beste Lösung ohne zusätzliche Bibliotheken (mit ES6).
quelle
Dies kann leicht mit der Unterstrich- / Lodash-Bibliothek erreicht werden:
Dokumente:
https://lodash.com/docs#find
https://lodash.com/docs#merge
quelle
.value()
Sie können .find so in Ihrem Beispiel verwenden
quelle
Sie müssen den Index des Objekts kennen, das Sie ändern. dann ist es ziemlich einfach
quelle
Ich denke, dieser Weg ist besser
quelle
findIndex
weisen Sie einen Wert zu, anstatt zu vergleichenAngesichts der folgenden Daten möchten wir die Beeren in der
summerFruits
Liste durch Wassermelonen ersetzen .Zwei Möglichkeiten, wie Sie dies tun können.
Erste Ansatz:
Zweiter Ansatz: Verwenden von
map
undspread
:summerFruitsCopy
list gibt nun ein Array mit aktualisiertem Objekt zurück.quelle
quelle
...
bevor projekte notwendig sind?...
ist als Spread-Operator bekannt. google it :)Dies ist eine weitere Antwort
find
. Dies beruht auf der Tatsache, dassfind
:Hier ist das kritische Javascript-Snippet:
Hier ist eine alternative Version desselben Javascript:
Hier ist eine noch kürzere (und etwas bösere) Version:
Hier ist eine voll funktionsfähige Version:
quelle
Sie können die Kartenfunktion verwenden -
quelle
Versuchen Sie diesen Code. Es verwendet die jQuery-Grep-Funktion
quelle
Wir können auch die Map-Funktion des Arrays verwenden, um das Objekt eines Arrays mithilfe von Javascript zu ändern.
quelle
Finden Sie zuerst den Index:
Dann:
Dann machen Sie mit diesem Index, was Sie wollen, wie:
$ scope [returnindex] .someKey = "someValue";
Hinweis: Bitte nicht für verwenden, da für alle Array-Dokumente überprüft wird. Verwenden Sie diese Option mit einem Stopper, damit sie angehalten wird, sobald sie gefunden wurde, wodurch der Code schneller wird.
quelle
Hier benutze ich eckige js. In Javascript können Sie for-Schleife verwenden, um zu finden.
quelle
Um mehrere Elemente mit den Übereinstimmungen zu aktualisieren, verwenden Sie:
quelle
Dies ist meine Antwort auf das Problem. Meine Unterstrichversion war 1.7, daher konnte ich sie nicht verwenden
.findIndex
.Also habe ich den Artikelindex manuell abgerufen und ersetzt. Hier ist der Code dafür.
Die folgende Methode ersetzt den Schüler
id:4
durch weitere Attribute im Objekt}}
Mit Unterstrich 1.8 wird es vereinfacht, da wir Methoden haben
_.findIndexOf
.quelle
Lassen Sie den Wert von aktualisieren
array[2] = "data"
quelle
quelle