Javascript/Lodash - 从数组中删除项目(具有相同的ID)

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函数.

Tul*_*lir 6

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)