カメリアの記事

意味があることやないことを綴ります

replace() を match() と map() の合成のように使う

なんとなく思い付いて下のように書いてみました。文書中の改行を 1 個減らす処理です。こういう書き方ができない場合、 for 文とか再帰関数を使ってちょっと割に合わない感じのコードを書くことになるような気がします。僕としては大発見でした。

なんか match() でマッチした箇所に map() みたいに処理しています。実は replace() は二つのメソッドの合成みたいなものだったんですね。

return src.replace(/(r?n)+/g, rly => {
    return rly.replace(/r?n/, "")
})