javascriptでとある書き方を調べていたら{}の後に[]が出てきたのですが、どう解釈すればよいかがよく分からなかったため確認しました。
コードは下記のようなものでした。
var temp = "test1test2test4"
temp.replace(
/test[1-3]/g,{test1:testRevised1
test2:testRevised2
test3:testRevised3}
[match])
正直やっていることは感覚で分かります。
ただ{test1:testr…}[match]の意味がどういう文法なのかが理解できませんでした。
結果として、理解できなかった理由は[]とmatchを分けて考えずこういう記法がないか調べていたためでした。
後にもう少し詳しく記載しますが、[]は前の連想配列の値を取り出すための記法で、matchはreplaceのコールバック関数です。
{}は連想配列
まず前提として{}は連想配列です。
キー:値をセットで配列に持っています。
上記のコードだとtest1がキーでtestRevised1が値です。
[]は連想配列のキーを指定する
[]は連想配列のキーを指定することで、連想配列のマッチする値を取り出すことができます。
test1を渡したらtestRevised1、test2を渡したらtestRevised2を返します。
matchはreplaceのコールバック関数
最後にmatchですが、これは連想配列とは関係なく、replaceのコールバック関数です。
matchはreplaceのパターンにマッチした文字列を返します。
つまりこの場合では、正規表現test[1-3]にマッチした文字列を保持するため、前に宣言した変数tempの中身のtest1test2test4のうちtest1とtest2が返ります。
matchにtest1が入ると連想配列のキーもtest1になるため、testRevised1が返ってきてtest1が置き換えられます。
test2の場合はtestRevised2に置き換えられます。
カッコはプログラムに出てくると知識がない人は結構混乱します。
プログラムを援用するときも書き方を丁寧に調べて学びたいと思います。
