2016-08-01 53 views
6

我想使用LoDash從數組中刪除一個對象。如何使用lodash從數組中刪除對象?

在server.js

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

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

我我去兩個命令嘗試,無法正常工作(的NodeJS):

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

中的console.log(結果):

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

有人可以幫我嗎?謝謝!

+1

我想避免疲勞:P –

回答

3
require('lodash')() 

調用lodash函數(由())創建包裝undefined一個LoDash對象。

這不是你想要的;你需要自己的lodash函數,它包含靜態方法。

刪除。

+0

uoooWoww令人印象深刻的,我沒有太多的知識,但它只是一個細節!所以我認爲我的代碼很好,它像一個魅力!謝謝@SLaks !!!! –

+1

有關LoDash包裝器對象(用於鏈接)的更多詳細信息,請參閱他們的文檔。 – SLaks

6

我會在這種情況下去reject()。較少的代碼:

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

_.remove()是一個不錯的選擇。

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>