オブジェクトの配列内の値を検索して更新するにはどうすればよいですか? 質問する

オブジェクトの配列内の値を検索して更新するにはどうすればよいですか? 質問する

オブジェクトの配列があります。あるフィールドで検索し、それを変更したいと思います。

var item = {...}
var items = [{id:2}, {id:2}, {id:2}];

var foundItem = items.find(x => x.id == item.id);
foundItem = item;

元のオブジェクトを変更したいのですが、どうすればいいですか? (Lodash でも構いません。)

ベストアンサー1

使用できますインデックスを検索オブジェクトの配列内のインデックスを見つけて、必要に応じて置き換えます。

var item = {...}
var items = [{id:2}, {id:2}, {id:2}];

var foundIndex = items.findIndex(x => x.id == item.id);
items[foundIndex] = item;

これは一意の ID を前提としています。ID が重複している場合 (例のように)、forEach を使用する方がよいでしょう。

items.forEach((element, index) => {
    if(element.id === item.id) {
        items[index] = item;
    }
});

おすすめ記事