Ham*_* L. 2 javascript arrays lodash
我试图从具有多个对象的数组中删除项目,在某些情况下,它可能具有相同的ID.这是数组:
var array = [{
"outletId": "OjHJ104",
"items": [{
"objectId": "lQnt4dmiPs",
"inCart": false,
},
{
"objectId": "lQnt4dmiPs",
"inCart": true,
},
{
"objectId": "lQnt4dmiPs",
"inCart": false,
},
{
"objectId": "lC6C96Ekua",
"inCart": true,
},
{
"objectId": "lC6C96Ekua",
"inCart": false,
},
{
"objectId": "lC6C96Ekua",
"inCart": true,
}
]
}];
Run Code Online (Sandbox Code Playgroud)
假设我想用objectId:lQnt4dmiPs删除项目
使用以下内容:
_.remove(array, { objectId: 'lQnt4dmiPs' });
Run Code Online (Sandbox Code Playgroud)
确实,它删除了该项目; 但是它会删除所有具有objectId的对象:lQnt4dmiPs,这不是想要的行为.我想只删除一次(因为删除功能会触发onclick ..).
我相信我在这里遗漏了一些东西,或者我应该使用另一个lodash函数.
Lodash没有直接执行此功能(lodash#1114关闭为wontfix),但您可以使用_.findIndex和Array#splice:
var index = _.findIndex(array, { objectId: 'lQnt4dmiPs' })
// The second argument is the number of items to remove.
var removedItem = array.splice(index, 1)
Run Code Online (Sandbox Code Playgroud)