Meine Objekte:
[
{
description: 'object1', id: 1
},
{
description: 'object2', id: 2
}
{
description: 'object3', id: 3
}
{
description: 'object4', id: 4
}
]
In meiner Funktion unten übergebe ich die Beschreibung, um die passende ID zu finden:
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
}
}
Ich versuche, die Suchmethode von lodash zu verwenden: https://lodash.com/docs#find
Meine Variable delete_id
wird jedoch undefiniert ausgegeben.
Update für die Menschen diese Frage auszuchecken, Ramda ist eine schöne Bibliothek , die gleiche Sache lodash zu tun hat, aber in einer Art und Weise funktionalen Programmierung :) http://ramdajs.com/0.21.0/docs/
javascript
arrays
lodash
Leon Gaban
quelle
quelle
_.find
dass nur eine der Eigenschaften auf magische Weise an den Rückruf übergeben wird. Ein einfacherconsole.log(description)
Rückruf hätte Ihnen das sagen können.Antworten:
Das an den Rückruf übergebene Argument ist eines der Elemente des Arrays. Die Elemente Ihres Arrays sind Objekte des Formulars
{description: ..., id: ...}
.Noch eine Alternative zu den Dokumenten, mit denen Sie verlinkt haben (lodash v3):
Lodash v4:
quelle
var delete_id = _.result(_.find(savedViews, { 'description': view }), 'id');
Auch noch 10 Minuten ..._.find(savedViews, ['description', view])
lodash und ES5
lodash und ES6
Dokumente unter https://lodash.com/docs#find
quelle
Sie können dies einfach in Vanilla JS tun:
Verwenden von
find
Verwenden
filter
(ursprüngliche Antwort)quelle
[0]
diese Lösung nicht verwenden muss.var delete_id = _.result(_.find(savedViews, { 'description': view }), 'id');
Danke für die Demo tho +1savedViews.find(el => el.description === view)
Mit der
find
Methode wird Ihrem Rückruf der Wert jedes Elements übergeben, wie:Sie möchten also Code wie:
quelle
Suchen Sie dazu das angegebene Objekt in einem Array, einem grundlegenden Verwendungsbeispiel für _.find
das würde gut funktionieren
_.find hilft bei der Rückgabe eines Elements in einem Array anstelle seines Index. Wenn Sie also ein Array von Objekten haben und ein einzelnes Objekt im Array anhand eines bestimmten Schlüsselwerts suchen möchten, ist pare _.find das richtige Werkzeug für den Job.
quelle
Sie benötigen weder Lodash noch Ramda oder andere zusätzliche Abhängigkeiten.
Verwenden Sie einfach die ES6-Funktion find () auf funktionale Weise:
Manchmal müssen Sie Bibliotheken von Drittanbietern verwenden, um alle mitgelieferten Extras zu erhalten. Vermeiden Sie jedoch im Allgemeinen Abhängigkeiten, wenn Sie sie nicht benötigen . Abhängigkeiten können:
quelle
quelle
Sie können Folgendes verwenden
Geben Sie dann das gesamte Objekt (nicht nur seinen Schlüssel oder Wert) wie folgt aus der Liste zurück:
quelle
Importieren
lodash
mitquelle
ID anhand des Namens abrufen
quelle