如何使用 Lodash 从数组中删除对象?

10

我正在尝试使用 Lodash 从数组中删除一个对象。

server.js 中(使用 NodeJS):

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

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

我尝试了两个命令,但都没有成功:

    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(result)的输出结果:

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

有人能帮我吗?谢谢!


1
我想避免疲劳 :P - Fábio Zangirolami
3个回答

20

_.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>


文档中没有说明清楚!我试着结合“filter”使用,但没有成功。 - Bernardo Dal Corno

7

在这种情况下,我会选择使用reject()。代码更简洁:

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

3
require('lodash')()

调用lodash函数(通过())会创建一个包装undefined的LoDash对象。

那不是你想要的;你想要的是包含静态方法的lodash函数本身。

移除它。


uoooWoww令人印象深刻,我对此并不了解很多,但这只是一个细节!所以我认为我的代码写得很好,它完美地运行了!谢谢@SLaks!!!! - Fábio Zangirolami
1
有关 LoDash 包装对象(用于链接)的更多详细信息,请参阅它们的文档。 - SLaks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接