2016-08-01 37 views
6

Ich versuche, ein Objekt aus einem Array mit LoDash zu entfernen.Wie kann ich mit lodash ein Objekt aus dem Array entfernen?

in server.js (NodeJS)

var lodash = require('lodash')(); 

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

ich bin mit zwei Befehl gehen versuchen und arbeiten nicht:

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

in console.log (Ergebnis):

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

Kann mir jemand helfen? Vielen Dank!

+1

Ich wollte Ermüdung vermeiden: P –

Antwort

3
require('lodash')() 

Aufruf der Funktion lodash (durch ()) erzeugt ein Objekt, das LoDash undefined einwickelt.

Das ist nicht, was Sie wollen; Sie wollen die lodash Funktion selbst, die statische Methoden enthält.

Entfernen Sie das.

+0

uoooWoww beeindruckend, ich habe nicht viel Wissen haben, aber es war nur ein Detail! also dachte ich mir gut mit meinem code, es funktionierte wie ein charm! Danke @SLaks !!!! –

+1

Weitere Informationen zu LoDash-Wrapper-Objekten (zum Verketten) finden Sie in deren Dokumentation. – SLaks

6

Ich würde für reject() in diesem Szenario gehen. Weniger Code:

var result = _.reject(rooms, { channel: 'room-a', name: 'test' }); 
7

_.remove() ist eine gute 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>