2016-08-01 274 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>