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 la 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_idestá saliendo indefinida.
Actualización para las personas que revisan esta pregunta, Ramda es una buena biblioteca para hacer lo mismo que lodash, pero en una forma de programación más funcional :) http://ramdajs.com/0.21.0/docs/
javascript
arrays
lodash
Leon Gaban
fuente
fuente

_.findqueda claro por qué crees que mágicamente pasaría solo una de las propiedades a la devolución de llamada. Un simpleconsole.log(description)en la devolución de llamada podría haberle dicho eso.Respuestas:
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: ...}.Otra alternativa más de los documentos a los que se vinculó (lodash v3):
Lodash v4:
fuente
var delete_id = _.result(_.find(savedViews, { 'description': view }), 'id');También 10 minutos más ..._.find(savedViews, ['description', view])lodash y ES5
lodash y ES6
documentos en https://lodash.com/docs#find
fuente
Puedes hacer esto fácilmente en vanilla JS:
Utilizando
findUsando
filter(respuesta original)fuente
[0]esta es la solución con la que voy.var delete_id = _.result(_.find(savedViews, { 'description': view }), 'id');Gracias por la demostración aunque +1savedViews.find(el => el.description === view)Con el
findmétodo, su devolución de llamada va a pasar el valor de cada elemento, como:Por lo tanto, desea un código como:
fuente
para esto encuentre el objeto dado en una matriz, un ejemplo de uso básico de _.find
esto funcionaría bien
_.find ayudará a devolver un elemento en una matriz, en lugar de su índice. Entonces, si tiene una matriz de objetos y desea encontrar un solo objeto en la matriz por un cierto valor clave, pare _.find es la herramienta adecuada para el trabajo.
fuente
No necesita Lodash o Ramda ni ninguna otra dependencia adicional.
Simplemente use la función ES6 find () de manera funcional:
A veces necesitas usar bibliotecas de terceros para obtener todos los artículos que vienen con ellas. Sin embargo, en general, trate de evitar las dependencias cuando no las necesite . Las dependencias pueden:
fuente
fuente
Puedes usar lo siguiente
Luego, para devolver el objeto completo (no solo su clave o valor) de la lista con lo siguiente:
fuente
Importar
lodashusandofuente
Fetch id basándose en el nombre
fuente