Javascript 无法使用LoDash将拉到工作位置

Javascript 无法使用LoDash将拉到工作位置,javascript,underscore.js,lodash,Javascript,Underscore.js,Lodash,我正在尝试使用LoDash从数组中删除对象 var roomList = [ {id: '12345', room: 'kitchen'}, {id: '23456', room: 'lounge'}, {id: '34567', room: 'bathroom'}, ]; console.log(roomList); //outputs all 3 rooms _.pull(roomList, {id: '12345'}); console.log(roomList)

我正在尝试使用LoDash从数组中删除对象

var roomList = [
    {id: '12345', room: 'kitchen'},
    {id: '23456', room: 'lounge'},
    {id: '34567', room: 'bathroom'},
];

console.log(roomList); //outputs all 3 rooms
_.pull(roomList, {id: '12345'});
console.log(roomList); //STILL outputs all 3 rooms!
我原以为在这种情况下,
\u pull
会起作用,但事实并非如此。如何使用LoDash从数组中删除对象?

请尝试以下代码:

var roomList = [
    {id: '12345', room: 'kitchen'},
    {id: '23456', room: 'lounge'},
    {id: '34567', room: 'bathroom'},
];

console.log(roomList);
_.pull(roomList, _.find(roomList, {id: '12345'}));
console.log(roomList);
请尝试以下代码:

var roomList = [
    {id: '12345', room: 'kitchen'},
    {id: '23456', room: 'lounge'},
    {id: '34567', room: 'bathroom'},
];

console.log(roomList);
_.pull(roomList, _.find(roomList, {id: '12345'}));
console.log(roomList);

另一种方法是使用
\过滤器

roomList = _.filter(roomList, function(item) {return item.id != '12345'});
console.log(roomList);

另一种方法是使用
\过滤器

roomList = _.filter(roomList, function(item) {return item.id != '12345'});
console.log(roomList);
您可以使用:

您可以使用:


它适用于数组,但不适用于对象数组。如果您检查代码,它会将数组值与您给出的值进行比较,
{id:'12345'}=={id:'12345',room:'kitchen'}
将返回任何关于如何从数组中删除对象的建议?它适用于数组,但不适用于对象数组。如果您检查代码,它会将数组值与您给出的值进行比较,
{id:'12345'}==={id:'12345',room:'kitchen'}
将返回关于如何从数组中删除对象的任何建议?这似乎可行,但我不确定为什么?查看文档
\u find
也会返回一个对象,因此它实际上与我的代码相同。顺便说一下,谢谢。
.find
返回元素和
.pull
方法使用严格相等进行比较(==)。John David Dalton说您可以使用
方法,它可能是比我的解决方案更好的解决方案。这似乎可行,但我不确定为什么?查看文档
\u find
也会返回一个对象,因此它实际上与我的代码相同。顺便说一下,谢谢。
.find
返回元素和
.pull
方法使用严格相等进行比较(==)。John David Dalton说您可以使用
.remove
方法,这可能是比我的解决方案更好的解决方案。感谢这一点,John-效果很好-我认为我必须使用带有
remove
的回调。remove
和其他几种方法支持“.pull”&“.where”风格的回调速记。通过提供对象,该方法将创建一个回调,该回调将对数组中的元素执行对象的部分比较。感谢John-工作良好-我认为我必须使用带有
删除
.remove
的回调,其他几个方法支持“u.pull”和“u.where”风格的回调速记。通过提供对象,该方法创建一个回调,该回调将对数组中的元素执行对象的部分比较。