underscore remove objects from empty array javascript arrays lodash

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 hacer esto fácilmente en vanilla JS:

Usando find

var delete_id = savedViews.filter(function (el) { return el.description === view; })[0].id;

Usando filter (respuesta original)

{ description: ''object1'', id: 1 }


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; },



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 } ];