Mes objets:
[
{
description: 'object1', id: 1
},
{
description: 'object2', id: 2
}
{
description: 'object3', id: 3
}
{
description: 'object4', id: 4
}
]
Dans ma fonction ci-dessous, je passe la description pour trouver l'ID correspondant:
function pluckSavedView(action, view) {
console.log('action: ', action);
console.log('pluckSavedView: ', view); // view = 'object1'
var savedViews = retrieveSavedViews();
console.log('savedViews: ', savedViews);
if (action === 'delete') {
var delete_id = _.result(_.find(savedViews, function(description) {
return description === view;
}), 'id');
console.log('delete_id: ', delete_id); // should be '1', but is undefined
}
}
J'essaie d'utiliser la méthode de recherche de lodash: https://lodash.com/docs#find
Cependant ma variable delete_id
sort indéfinie.
Mise à jour pour les personnes qui vérifient cette question, Ramda est une belle bibliothèque pour faire la même chose que lodash, mais d'une manière de programmation plus fonctionnelle :) http://ramdajs.com/0.21.0/docs/
javascript
arrays
lodash
Léon Gaban
la source
la source
_.find
ne vois pas pourquoi, selon vous, passerait comme par magie une seule des propriétés au rappel. Un simpleconsole.log(description)
rappel aurait pu vous le dire.Réponses:
L'argument passé au callback est l'un des éléments du tableau. Les éléments de votre tableau sont des objets de la forme
{description: ..., id: ...}
.Encore une autre alternative aux documents auxquels vous avez lié (lodash v3):
Lodash v4:
la source
var delete_id = _.result(_.find(savedViews, { 'description': view }), 'id');
10 minutes de plus ..._.find(savedViews, ['description', view])
lodash et ES5
lodash et ES6
docs sur https://lodash.com/docs#find
la source
Vous pouvez le faire facilement dans vanilla JS:
En utilisant
find
Utilisation de
filter
(réponse originale)la source
[0]
c'est la solution avec laquelle je vaisvar delete_id = _.result(_.find(savedViews, { 'description': view }), 'id');
Merci pour la démo tho +1savedViews.find(el => el.description === view)
Avec la
find
méthode, votre rappel recevra la valeur de chaque élément, comme:Ainsi, vous voulez un code comme:
la source
pour cela, recherchez l'objet donné dans un tableau, un exemple d'utilisation de base de _.find
cela fonctionnerait bien
_.find aidera à renvoyer un élément dans un tableau, plutôt que son index. Donc, si vous avez un tableau d'objets et que vous voulez trouver un seul objet dans le tableau par une certaine valeur de clé, pare _.find est le bon outil pour le travail.
la source
Vous n'avez pas besoin de Lodash ou Ramda ou de toute autre dépendance supplémentaire.
Utilisez simplement la fonction find () de l'ES6 de manière fonctionnelle:
Parfois, vous devez utiliser des bibliothèques tierces pour obtenir tous les avantages qui les accompagnent. Cependant, de manière générale, essayez d'éviter les dépendances lorsque vous n'en avez pas besoin . Les dépendances peuvent:
la source
la source
Vous pouvez utiliser ce qui suit
Ensuite, pour renvoyer l'objet entier (pas seulement sa clé ou sa valeur) à partir de la liste avec ce qui suit:
la source
Importer
lodash
avecla source
Récupérer l'identifiant en fonction du nom
la source