javascript使っていて、配列内の要素を属性を指定した上で削除、更新することが多いかったので個人的な備忘録も兼ねて投稿(マークダウンの練習、物書きの練習も兼ねて)。
こんな感じの3レコードある配列の中から対象を削除、更新していきたいとします。
test.js
let list = [{'id':1,'username':'hiro'},
{'id':2,'username':'maro'},
{'id':3,'username':'maro'}];
console.log(JSON.stringify(list));
まずはconsole.logで表示してみます。
[{"id":1,"username":"hiro"},{"id":2,"username":"maro"},{"id":3,"username":"maro"}]
削除
username = maroの2件をfilterを使って削除します。
test.js
list = Array.from(list.filter( (obj) => { return obj['username'] != 'maro'; } ) );
⇧listをfilterしdeep copy。
console.logで表示したところ。
[{"id":1,"username":"hiro"}]
削除されていました。
対象が複数の場合でも1件でも変わりません。
更新(1件)
更新対象が1件であればfindを使います。
id=2のレコードのusernameをheloに更新したいと思います。
test.js
let oneOfList = list.find( (obj) => { return obj['id'] == 2; } );
oneOfList['username'] = 'helo';
console.logで表示したところ。
[{"id":1,"username":"hiro"},{"id":2,"username":"helo"},{"id":3,"username":"maro"}]
更新(複数)
対象をまとめて更新しても良い場合
filterとforEachを使います。
maroのレコード2件をjaroに更新したいと思います。
test.js
let someOfList = list.filter( (obj) => { return obj['username'] == 'maro'; } );
someOfList = someOfList.forEach( (obj) => { obj['username'] = 'jaro'; } );
console.logで表示したところ。jaroに更新されています。
[{"id":1,"username":"hiro"},{"id":2,"username":"jaro"},{"id":3,"username":"jaro"}]
最後に
ご拝読ありがとうございました。