たとえば全部"ゴミ記事"だったら
たとえば全部"ゴミ記事"だったら:
配列の中のすべての要素が〇〇だったら、△△の処理をしたい。
逆に、ひとつでも〇〇じゃない要素があったら✗✗したい。
こんな場面、割とよくありますよね。
そんなときはeveryメソッドを使うと便利です。
まずはforEachで書いてみます。
もし全部"ゴミ記事"だったら「全部ゴミ記事!」と表示するプログラムです。
変数allGomiに初期値としてtrueを入れておいて、
forEachで全要素を回して、一つでもゴミ記事じゃないのがあれば
allGomiがfalseになる、という流れですね。
everyメソッドを使うともう少しシンプルに書けます。
everyメソッドは真偽値を返します。
つまり、実行するとtrueかfalseに変身するわけですね。
それを定数allGomiに格納します。
everyメソッドは、引数として関数を1つ受け取ります。1
そのコールバック関数を、配列のすべての要素に対して適用してくれます。
forEachに似てますね。
今回の例でいうと、5個の要素に対してコールバック関数を適用してくれるのですが、
その関数が5回ともtrue2を返した場合に定数allGomiにtrueが入るわけです。
逆に関数が1回でもfalseを返すとallGomiはfalseになります。
なので、コールバック関数の中を
としておけば、コールバック関数が実行されるたびにその要素がゴミ記事かどうかの真偽値が返され、結果としてallGomiには(今回は)falseが入るわけですね。
アロー関数であれば、returnを省略して
と1行で書くこともできますね。
JavaScriptの配列3は、ほかにもsome、map、filter、reduceなど
便利なメソッドをたくさん持っています。
これらを使いこなすと、色々な処理や条件を1行でスッキリと書けたりするので、ぜひ色々使ってみましょう。
全部〇〇だったら△△したい
配列の中のすべての要素が〇〇だったら、△△の処理をしたい。逆に、ひとつでも〇〇じゃない要素があったら✗✗したい。
こんな場面、割とよくありますよね。
そんなときはeveryメソッドを使うと便利です。
まずはeveryメソッドを使わずに書いてみる
まずはforEachで書いてみます。もし全部"ゴミ記事"だったら「全部ゴミ記事!」と表示するプログラムです。
script.js
const Qiita = ["ゴミ記事", "ゴミ記事", "ネタ記事", "ゴミ記事", "ゴミ記事"]; //ゴミ記事が4つ、ネタ記事が1つ入った配列を、定数Qiitaに格納。 let allGomi = true; //初期値ではtrue。 //forEachで全部の記事を回します。 Qiita.forEach(kiji => { if(kiji !== "ゴミ記事"){ allGomi = false; //一つでもゴミ記事じゃない要素があればfalseが代入される。 } }); if(allGomi){ alert("全部ゴミ記事!"); }else{ alert("良記事もあるだろ!"); }
forEachで全要素を回して、一つでもゴミ記事じゃないのがあれば
allGomiがfalseになる、という流れですね。
everyを使ってみる
everyメソッドを使うともう少しシンプルに書けます。script.js
/* 〜〜〜省略〜〜〜 */ const allGomi = Qiita.every(kiji => { return kiji === "ゴミ記事"; }); /* 〜〜〜省略〜〜〜 */
つまり、実行するとtrueかfalseに変身するわけですね。
それを定数allGomiに格納します。
everyメソッドは、引数として関数を1つ受け取ります。1
そのコールバック関数を、配列のすべての要素に対して適用してくれます。
forEachに似てますね。
今回の例でいうと、5個の要素に対してコールバック関数を適用してくれるのですが、
その関数が5回ともtrue2を返した場合に定数allGomiにtrueが入るわけです。
逆に関数が1回でもfalseを返すとallGomiはfalseになります。
なので、コールバック関数の中を
script.js
return kiji === "ゴミ記事";
アロー関数であれば、returnを省略して
script.js
const allGomi = Qiita.every(kiji => kiji === "ゴミ記事");
ほかにも
JavaScriptの配列3は、ほかにもsome、map、filter、reduceなど便利なメソッドをたくさん持っています。
これらを使いこなすと、色々な処理や条件を1行でスッキリと書けたりするので、ぜひ色々使ってみましょう。
コメント
コメントを投稿