2021-11-01から1ヶ月間の記事一覧
[コラム]RegExp#execメソッド String#matchAllメソッドは、ES2020で導入されたメソッドです。 それまでは、RegExp#execメソッドというString#matchメソッドによく似た挙動をするメソッドを利用して、String#matchAllメソッド相当の表現を実装していました。 …
マッチした文字列の一部を取得 キャプチャリング キャプチャリングとは、正規表現中で/パターン1(パターン2)/のようにカッコで囲んだ部分を取り出すことです。 String#matchメソッドとString#matchAllメソッドはどちらもキャプチャリングに対応しています。 …
正規表現による検索 (続き) 正規表現によるマッチした文字列の取得 文字列による検索では、検索した文字列そのものがマッチした文字列になります。 しかし、searchメソッドの正規表現による検索は、正規表現パターンによる検索であるため、検索してマッチし…
正規表現は英語で「Regular Expression」です。 正規表現で使用する特殊文字 正規表現とは、「いくつかの文字列を一つの形式で表現するための表現方法」です。その「一つの形式で表現するため」に、いくつかのある文字に対して特別な意味を与えています。 - …
文字列の比較 文字列の比較には===(厳密比較演算子)を利用します。 次の条件を満たしていれば同じ文字列となります。 文字列の要素であるCode Unitが同じ順番で並んでいるか 文字列の長さ(length)は同じか // "A"と"B"のCode Unitは65と66 console.log("…
ダブルクォートとシングルクォート "(ダブルクォート)と'(シングルクォート)に意味的な違いはありません。 const double = "文字列"; console.log(double); // => "文字列" const single = '文字列'; console.log(single); // => '文字列' // どちらも同…
reduceメソッド 前回のコールバック関数の結果を元に、コールバック関数を実行するメソッドです。reduceの最終的な返り値は、配列以外の任意の値になります。 const array = [1, 2, 3]; // すべての要素を加算した値を返す // accumulatorの初期値は`0` cons…
配列から要素を削除(つづき) lengthプロパティへの代入 配列のlengthプロパティへ要素数を代入すると、その要素数に配列が切り詰められます。 つまり、lengthプロパティへ0を代入すると、インデックスが0以降の要素がすべて削除されます。 配列の長さが0とい…
[ES2019] 配列をフラット化 Array#flatメソッド 多次元配列をフラットな配列に変換できます。 引数を指定しなかった場合は1段階のみのフラット化ですが、引数に渡す数値でフラット化する深さを指定できます。 配列をすべてフラット化する場合には、無限を意…
指定範囲の要素を取得 Array#sliceメソッド slice は end 自体は含めず、その直前まで取り出します。例えば、slice(1,4) は 2 番目から 4 番目までの要素 (インデックスがそれぞれ 1, 2, 3 番目の要素) を取り出します。 const array = ["A", "B", "C", "D",…
コラム:Object.prototypeを継承しないオブジェクト Objectはすべてのオブジェクトの親になるオブジェクトであるという話でしたが、例外もあるそうです。 以下のコードではObject.prototypeを引数に持たずにnullを渡すと、prototypeは継承しないことが分かり…
ビルトインメソッド JavaScriptにおけるオブジェクトに自動的に実装されるメソッドです。 前の章で紹介されていたtoStringメソッドもそのうちのひとつで、すべてのオブジェクトがtoStringを持っています。 Objectはすべての元 Array、String、Functionなどの…
オブジェクトのマージと複製 Object.assignメソッド Object.assignメソッドを使うと、オブジェクトの複製やオブジェクト同士のマージができます。以下に、Object.assignメソッドの基本構文を記載します。 // 第一引数に、マージさせるtargetオブジェクトを書…
toStringメソッド オブジェクトのtoStringメソッドは、オブジェクト自身を文字列化するメソッドです。 Stringコンストラクタ関数は、引数に渡されたオブジェクトのtoStringメソッドを呼び出しています。 const obj = { key: "value" }; console.log(obj.toSt…
プロパティの値がundefinedかどうか確認しプロパティの存在を確認する if文を使うことで、プロパティの値がundefinedかどうか確認できます。プロパティの値があることが前提ならばundefinedかどうかを確認することでプロパティの存在の有無を確認する事にな…
Computed property names Computed property namesとは、オブジェクトリテラル内でのブラケット記法を使ったプロパティ名です。Computed property namesを使うことで、プロパティ名を動的に作成できます。 const key = "age"; const person = { [key]: "25" …
分割代入 前回オブジェクトのプロパティにアクセスする方法を学習しました。 以下はオブジェクトのプロパティを変数として定義し直しています。 const languages = { ja: "日本語", en: "英語" }; const ja = languages.ja; const en = languages.en; consol…
これまでに学習してきたfor文やforEachメソッドで数値の合計を返すsum関数を学習してきましたが、いずれの方法もletで再代入して反復処理を行う必要がありました。 reduceメソッドを使えば一時的な変数を定義せずに反復処理した結果だけを受け取ることが出来…
Object.keysメソッド 前回はfor...inメソッドを使った際に親オブジェクト自身がプロパティを持っている場合に意図しない結果を生んでしまうこと問題があるという点まで学習しました。 Object.keysメソッドを使うことで安全にオブジェクトのプロパティを列挙…
配列のsomeメソッド someメソッドを使うことで、配列の要素をテストします。テストがtrueになる要素が1つでもある場合、someメソッドはtrueを返します。テストはアロー関数で書きます。 const array = [1, 2, 3, 4, 5]; // 要素が2の倍数かテストする。 cons…
配列における反復処理 forEachメソッドを使うことで、配列の全ての要素に対して反復処理を実行できます。引数で渡したコールバック関数を、全ての要素に対して実行します。 let array = ["10月","11月","12月"]; array.forEach((month) => { console.log(mon…