Le code ci-dessous provient de 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"
}
];
Par exemple, je veux changer la valeur desc de jquery-ui . Comment puis je faire ça?
De plus, existe-t-il un moyen plus rapide d'obtenir les données? Je veux dire donner à l'objet un nom pour récupérer ses données, tout comme l'objet à l'intérieur d'un tableau? Ce serait donc quelque chose commejquery-ui.jquery-ui.desc = ....
javascript
jquery
arrays
qinHaiXiang
la source
la source
projects["jquery-ui"].desc
. Est-ce que cela en valait la peine que d'obtenir une syntaxe plus agréable?Réponses:
Vous devez rechercher dans le tableau comme:
et l'utiliser comme
METTRE À JOUR:
Pour l'obtenir plus rapidement:
(Selon le commentaire de Frédéric, vous ne devez pas utiliser de trait d'union dans la clé d'objet, ou vous devez utiliser la notation "jquery-ui" et projects ["jquery-ui"].)
la source
-
dans le nom de l'objet. Vous auriez à écrire"jquery-ui": {}
etprojects["jquery-ui"].desc
respectivement.C'est assez simple
findIndex
méthode.yourArray[indexThatyouFind]
la source
()
sur lafindIndex
méthode?[...myArray.slice(0, objIndex), Object.assign({}, myArray[objIndex], myArray.slice(objIndex + 1))]
[...myArray.slice(0, objIndex), Object.assign({}, myArray[objIndex], ...myArray.slice(objIndex + 1))]
pas être ? Je pense que vous manquez les deuxièmes ellipses.Manière ES6 , sans muter les données d'origine.
la source
La meilleure solution, grâce à ES6.
Cela renvoie un nouveau tableau avec une description remplacée pour l'objet qui contient une valeur égale à "jquery-ui".
la source
Vous pouvez utiliser $ .each () pour parcourir le tableau et localiser l'objet qui vous intéresse:
la source
Utiliser la carte est la meilleure solution sans utiliser de bibliothèques supplémentaires. (En utilisant ES6)
la source
C'est facilement réalisable avec la bibliothèque underscore / lodash:
Documents:
https://lodash.com/docs#find
https://lodash.com/docs#merge
la source
.value()
vous pouvez utiliser .find donc dans votre exemple
la source
vous devez connaître l'index de l'objet que vous modifiez. alors c'est assez simple
la source
Je pense que c'est mieux ainsi
la source
findIndex
vous attribuez une valeur au lieu de comparerétant donné les données suivantes, nous voulons remplacer les baies de la
summerFruits
liste par la pastèque .Vous pouvez le faire de deux manières.
Première approche:
Deuxième approche: utiliser
map
etspread
:summerFruitsCopy
La liste retournera maintenant un tableau avec un objet mis à jour.la source
la source
...
avant que les projets ne soient nécessaires?...
est connu sous le nom d'opérateur d'étalement. google it :)Ceci est une autre réponse impliquant
find
. Cela repose sur le fait quefind
:Voici l'extrait critique de Javascript:
Voici une autre version du même Javascript:
Voici une version encore plus courte (et un peu plus diabolique):
Voici une version de travail complète:
la source
Vous pouvez utiliser la fonction de carte -
la source
Essayez ce code. il utilise la fonction jQuery grep
la source
Nous pouvons également utiliser la fonction de carte d'Array pour modifier l'objet d'un tableau à l'aide de Javascript.
la source
Recherchez d'abord l'index:
Ensuite:
Faites ensuite ce que vous voulez avec cet index, comme:
$ scope [returnindex] .someKey = "someValue";
Remarque: veuillez ne pas utiliser pour, car for vérifiera tous les documents du tableau, utilisez tout avec un bouchon, donc il s'arrêtera une fois qu'il sera trouvé, donc un code plus rapide.
la source
Ici, j'utilise des js angulaires. En javascript, vous pouvez utiliser for loop pour trouver.
la source
pour mettre à jour plusieurs éléments avec les correspondances, utilisez:
la source
Ceci est ma réponse au problème. Ma version de soulignement était 1.7 donc je ne pouvais pas l'utiliser
.findIndex
.J'ai donc obtenu manuellement l'index de l'article et l'ai remplacé. Voici le code pour la même chose.
La méthode ci-dessous remplacera l'élève
id:4
par plus d'attributs dans l'objet}
Avec le soulignement 1.8, cela sera simplifié car nous avons des méthodes
_.findIndexOf
.la source
Permettez-vous de mettre à jour la valeur de
array[2] = "data"
la source
la source