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_id
está 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
_.find
queda 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
find
Usando
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
find
mé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
lodash
usandofuente
Fetch id basándose en el nombre
fuente