[Javascript] 配列の検索をカンタンにする技

2022年10月9日

Javascript テクノロジー プログラミング

eyecatch 他人が書いたjavascriptは古代文字が並んでいるように見えてしまう、ユゲタです。 もうね、a || bとか、a ? b : cとか、 変数が記号にどう影響しているのかパッと見、わからなくなります。 でも、javascriptの言語学習は、こういう記述になれるという事ですね。

記号の意味

ちなみに、この記号の意味は、 const value = a || b これは、valueという変数に、aの値を代入するけど、その値がif判定でfalseに当たる場合はbを挿入する。という意味です。 if判定でfalseというのは、aの値がfalseまたは、nullまたは、undefinedまたは、NaNまたは、0の時を意味します。 そして、 const value = a ? b : C これは、三項演算子という書き方で、 if(a){ value = b }else{ value = c } これと同じ意味になります。 ホント初心者には分かりづらいですが、なれるとかなり便利な言語なんですけどね

配列操作の検索技

次のような配列データがある場合に、中のobjectをカンタンに検索する方法です。 const datas = [ { "id" : 1, "name" : "a", "value" : "hoge" }, { "id" : 2, "name" : "b", "value" : "hage" }, { "id" : 3, "name" : "c", "value" : "huga" } ] id=1を抽出したい場合次の1文でカンタンにできます。 datas.find(e => e.id === 1) ちなみに、idに同じ値が複数ある場合は、一番先頭のオブジェクトデータが取得されます。 { "id" : 1, "name" : "a", "value" : "hoge" } でも単一だけじゃなく、同じ値を全部とか複数の値にマッチする全部(複数)を選択したい場合は、次のように書きます。 datas.filter(e => e.id === 2 || e.id === 3) idが2または3の場合の結果です。 [ { "id" : 2, "name" : "b", "value" : "hage" }, { "id" : 3, "name" : "c", "value" : "huga" } ] どうですか?カンタンでしょ? findは、querySelectorに操作が似ていて、filterはquerySelectorAllに似ている感じがしませんか? そんなイメージで覚えておくと便利に使えると思いますよ。

どんな時に使えばいいの?

こうしたオブジェクトを複数含んだ配列データって、データベースの検索結果のデータがこんな感じで得られる場合が多いです。 他にもAPIから取得した複数のデータもArray in Objectの形状になっている場合がほどんどなので、その配列データ内の検索を簡易に、且つ柔軟にできるという技でした。 ちなみに、それぞれ返り値がない場合は、 findはundefinedが返り、 filterは、空配列([])が変えるので、この点も覚えておけばもはや配列検索は無敵になるでしょう。 いや〜、開発が捗る捗る!

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ