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

时间:2016-08-01 17:23:18

标签: javascript node.js lodash

我正在尝试使用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(结果)中

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

有人能帮助我吗?谢谢!

3 个答案:

答案 0 :(得分:14)

_.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>
&#13;
&#13;
&#13;

答案 1 :(得分:6)

在这种情况下我会去reject()。更少的代码:

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

答案 2 :(得分:3)

lodash

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

那不是你想要的;你想要QRegExp kcc_stationing("(-)?(\\d+)\\.(\\d+)[^a-zA-Z]"); QString str; if (kcc_stationing.indexIn(description) > -1) { str = kcc_stationing.cap(1) + kcc_stationing.cap(2) + "." + kcc_stationing.cap(3); qDebug() << kcc_stationing.cap(1); qDebug() << kcc_stationing.cap(2); qDebug() << kcc_stationing.cap(3); qDebug() << "Description: " << description; qDebug() << "Returned Stationing string: " << str; } 函数本身,它包含静态方法。

删除它。