2016-08-01 11 views
6

Próbuję usunąć obiekt z tablicy za pomocą LoDash.Jak mogę usunąć obiekt z tablicy, z domieszką?

w server.js (NodeJS)

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

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

jestem próbuje go ze dwa polecenia i nie działa:

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

w console.log (wynik):

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

Czy ktoś może mi pomóc? Dziękuję Ci!

+1

Chciałem uniknąć zmęczenia: P –

Odpowiedz

3
require('lodash')() 

Wywołanie funkcji lodash (przez ()) tworzy obiekt LoDash która otacza undefined.

Nie tego chcesz; chcesz sama funkcja lodash, która zawiera metody statyczne.

Usuń to.

+0

uoooWoww imponująca, nie mam dużo wiedzy, ale to tylko drobny szczegół! więc dobrze się pomyślałem z moim kodem, działało jak czar! thankyou @SLaks !!!! –

+1

Aby uzyskać więcej informacji o obiektach opakowania LoDash (do łączenia), zobacz ich dokumenty. – SLaks

6

pójdę do reject() w tym scenariuszu. Mniej kodu:

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

_.remove() to dobra opcja.

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>