0
0

More than 3 years have passed since last update.

配列から指定した属性を持つ要素の削除、更新

Posted at

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"}]

最後に

ご拝読ありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0