如何使用 lodash 从列表中删除元素?

2022-08-30 01:29:18

我有一个对象看起来像这样:

var obj = {
    "objectiveDetailId": 285,
    "objectiveId": 29,
    "number": 1,
    "text": "x",
    "subTopics": [{
        "subTopicId": 1,
        "number": 1
    }, {
        "subTopicId": 2,
        "number": 32
    }, {
        "subTopicId": 3,
        "number": 22
    }]
}
var stToDelete = 2;

我已经在我的应用程序中安装了其他内容。有没有一种有效的方法来删除条目:从对象中删除?lodashlodash{"subTopicId":2, "number":32}obj

或者有没有一种javascript方法来做到这一点?


答案 1

正如lyyons在评论中指出的那样,更习惯用语和lodashy的方式是使用_.remove,就像这样。

_.remove(obj.subTopics, {
    subTopicId: stToDelete
});

除此之外,您还可以传递一个谓词函数,其结果将用于确定是否必须删除当前元素。

_.remove(obj.subTopics, function(currentObject) {
    return currentObject.subTopicId === stToDelete;
});

或者,您可以通过使用 _.filter 过滤旧数组并将其分配给同一对象来创建新数组,如下所示

obj.subTopics = _.filter(obj.subTopics, function(currentObject) {
    return currentObject.subTopicId !== stToDelete;
});

obj.subTopics = _.filter(obj.subTopics, {subTopicId: stToKeep});

答案 2

只需使用香草JS。您可以使用拼接来移除元素:

obj.subTopics.splice(1, 1);

演示