How can I remove object from array, with Lodash?

25,830

Solution 1

require('lodash')()

Calling the lodash function (by ()) creates a LoDash object that wraps undefined.

That's not what you want; you want the lodash function itself, which contains static methods.

Remove that.

Solution 2

_.remove() is a good option.

var rooms = [
  { channel: 'room-a', name: 'test' },
  { channel: 'room-b', name: 'test' } 
];

_.remove(rooms, {channel: 'room-b'});

console.log(rooms); //[{"channel": "room-a", "name": "test"}]
<script src="https://cdn.jsdelivr.net/lodash/4.14.2/lodash.min.js"></script>

Solution 3

I'd go for reject() in this scenario. Less code:

var result = _.reject(rooms, { channel: 'room-a', name: 'test' });
Share:
25,830
Fábio Zangirolami
Author by

Fábio Zangirolami

Updated on February 19, 2020

Comments

  • Fábio Zangirolami
    Fábio Zangirolami about 4 years

    I'm trying to remove an object from an array using Lodash.

    In server.js (using NodeJS):

        var lodash = require('lodash')();
    
        var rooms = [
          { channel: 'room-a', name: 'test' },
          { channel: 'room-b', name: 'test' } 
        ]
    

    I tried with two commands and it did not work:

        var result = lodash.find(rooms, {channel: 'room-a', name:'test'});
        var result = lodash.pull(rooms, lodash.find(rooms, {channel: 'room-a', name:'test'}));
    

    Here's the output of console.log(result):

        LodashWrapper {
          __wrapped__: undefined,
          __actions__: [ { func: [Function], args: [Object], thisArg: [Object] } ],
          __chain__: false,
          __index__: 0,
          __values__: undefined }
    

    Can someone help me? Thank you!

  • Fábio Zangirolami
    Fábio Zangirolami almost 8 years
    uoooWoww impressive, I do not have much knowledge, but it was just a detail! so I thought well with my code, it worked like a charm! thankyou @SLaks !!!!
  • SLaks
    SLaks almost 8 years
    For more details about LoDash wrapper objects (for chaining), see their docs.
  • Bernardo Dal Corno
    Bernardo Dal Corno almost 6 years
    That wasn't clear in the docs! Was trying to combine with filter to no success