javascript - remove - ¿Cómo usar lodash para encontrar y devolver un objeto de Array?
lodash remove from array (10)
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/
Con el método
find
, su devolución de llamada va a pasar el valor de cada elemento, como:
_.find(savedViews, function(o) {
return o.description === view;
})
Por lo tanto, desea un código como:
var delete_id = _(savedViews).where({ description : view }).get(''0.id'')
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 de los documentos a los que se vinculó (lodash v3):
_.find(savedViews, ''description'', view);
Lodash v4:
_.find(savedViews, [''description'', view]);
Importar
lodash
usando
$ npm i --save lodash
{
"roles": [
{
"id": 1,
"name": "admin",
},
{
"id": 3,
"name": "manager",
}
]
}
fetchIdBasingOnRole() {
const self = this;
if (this.employee.roles) {
var roleid = _.result(
_.find(this.getRoles, function(obj) {
return obj.name === self.employee.roles;
}),
"id"
);
}
return roleid;
},
Puedes usar lo siguiente
savedViews.find(el => el.description === view)
Luego, para devolver el objeto completo (no solo su clave o valor) de la lista con lo siguiente:
var _ = require(''lodash'');
var objArrayList =
[
{ name: "user1"},
{ name: "user2"},
{ name: "user2"}
];
var Obj = _.find(objArrayList, { name: "user2" });
// Obj ==> { name: "user2"}
Recuperar ID basándose en el nombre
{ "roles": [ { "id": 1, "name": "admin", }, { "id": 3, "name": "manager", } ] } fetchIdBasingOnRole() { const self = this; if (this.employee.roles) { var roleid = _.result( _.find(this.getRoles, function(obj) { return obj.name === self.employee.roles; }), "id" ); } return roleid; },
lodash y ES5
var song = _.find(songs, {id:id});
lodash y ES6
let song = _.find(songs, {id});
documentos en https://lodash.com/docs#find
para esto encuentre el objeto dado en una matriz, un ejemplo de uso básico de _.find
import { find } from ''lodash''
esto funcionaría bien
let match = find(savedViews, { ''ID'': ''id to match''});
_.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.
No necesita Lodash o Ramda ni ninguna otra dependencia adicional.
Simplemente use la función find () de ES6 de manera funcional:
q = _.find(array, {id:''4''}); // delete id
console.log(q); // {description: ''object4'', id: 4}
A veces necesitas usar bibliotecas de terceros para obtener todos los artículos que vienen con ellas. Sin embargo, en términos generales, intente evitar las dependencias cuando no las necesite . Las dependencias pueden:
- hincha el tamaño de tu código incluido,
- tendrás que mantenerlos actualizados,
- y pueden introducir errores o riesgos de seguridad
const array =
[
{
description: ''object1'', id: 1
},
{
description: ''object2'', id: 2
},
{
description: ''object3'', id: 3
},
{
description: ''object4'', id: 4
}
];