1. ホーム
  2. javascript

[解決済み] lodashで、リストから要素を削除するにはどうしたらいいですか?

2022-03-15 17:03:02

質問

次のようなオブジェクトがあります。

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;

私は lodash は、私のアプリケーションで他のもののためにインストールされています。を効率的に使用する方法はありますか? lodash を入力すると、そのエントリーが削除されます。 {"subTopicId":2, "number":32} から obj オブジェクトを作成しますか?

または、javascriptでこれを行う方法はありますか?

どのように解決するのですか?

コメントでlyyonsさんが指摘されているように、よりイディオムでロダリッシュな方法として、この場合は _.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});