Mis objetos:
[ { description: 'object1', id: 1 }, { description: 'object2', id: 2 } { description: 'object3', id: 3 } { description: 'object4', id: 4 } ]En mi función a continuación, paso la descripción para encontrar el ID coincidente:
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 } }Estoy tratando de usar el método de búsqueda de lodash: https://lodash.com/docs#find
Sin embargo, mi variable delete_id sale sin definir.
Actualización para las personas que revisan esta pregunta, Ramda es una buena biblioteca para hacer lo mismo que hace lodash, pero de una manera de programación más funcional :) http://ramdajs.com/0.21.0/docs/
lodash y ES5
var song = _.find(songs, {id:id});lodash y ES6
let song = _.find(songs, {id});documentos en https://lodash.com/docs#find
El argumento pasado a la devolución de llamada es uno de los elementos de la matriz. Los elementos de su matriz son objetos de la forma {description: ..., id: ...} .
var delete_id = _.result(_.find(savedViews, function(obj) { return obj.description === view; }), 'id');Otra alternativa más de los documentos a los que se vinculó (lodash v3):
_.find(savedViews, 'description', view);Lodash v4:
_.find(savedViews, ['description', view]);Puedes hacer esto fácilmente en Vanilla JS:
Usando find :
const savedViews = [{"description":"object1","id":1},{"description":"object2","id":2},{"description":"object3","id":3},{"description":"object4","id":4}]; const view = 'object2'; const delete_id = savedViews.find(obj => { return obj.description === view; }).id; console.log(delete_id); Usando filter (respuesta original):
const savedViews = [{"description":"object1","id":1},{"description":"object2","id":2},{"description":"object3","id":3},{"description":"object4","id":4}]; const view = 'object2'; const delete_id = savedViews.filter(function (el) { return el.description === view; })[0].id; console.log(delete_id);