split と join が対称じゃない
- カテゴリ:
- JavaScript
- コメント数:
- Comments: 0
◆ 引数なしだと
◆ join は 「,」 で結合
◆ split は分割なしで配列に入れるだけ
◆ join は 「,」 で結合
◆ split は分割なしで配列に入れるだけ
split と join を使うときはいつも引数を使ってたからあんまり気にしなかったのですが join は忘れた結果 「,」 で結合されてることがあったので デフォルトは 「,」 だと思ってました
split と join は対になるものなので join が 「,」 なら split も 「,」 と思ってました
しかし いざ使ってみたら
split は省略したら分割なしで配列に包まれるだけのようです
昔からある JavaScript の仕様は変なのが多いですが ここでも ですね
分かりづらいので デフォルトなんて忘れて必ず引数を書くようにしたほうが良さそうです
それにしても 分割無しでただ配列にいれるだけなら [value] って書けばいいのに なんでこんな無駄な機能入れたんだろう?
join と対応させて 「,」 にしておけばいいのに
split はこれだけじゃなく 2 つ目の引数も無意味なもので ダメな関数さがすごいです
2 つ目の引数は分割数ですが 元の文字列を指定の数に分けるというものではないです
分けられるだけ分割したあとで 指定した数だけ前から取り出すというものです
メソッドチェーンで slice すれば済むものです
具体例でいうと 改行で分割して 「1 行目」 と 「2 行目以降」 の 2 つに分割したいのに 「1 行目」 と 「2 行目」 だけ返ってきて 3 行目以降は取得できません
あと 互換性の意味で仕方ない気もしますが 空文字指定で分割したときに絵文字が分割できません
split を使うなら 正規表現で unicode 指定が必要です
separate とか別の名前でいいので 便利な関数を作って欲しいものです
split と join は対になるものなので join が 「,」 なら split も 「,」 と思ってました
しかし いざ使ってみたら
[1,2,3].join()
// "1,2,3"
"1,2,3".split()
// ["1,2,3"]
split は省略したら分割なしで配列に包まれるだけのようです
昔からある JavaScript の仕様は変なのが多いですが ここでも ですね
分かりづらいので デフォルトなんて忘れて必ず引数を書くようにしたほうが良さそうです
それにしても 分割無しでただ配列にいれるだけなら [value] って書けばいいのに なんでこんな無駄な機能入れたんだろう?
join と対応させて 「,」 にしておけばいいのに
split はこれだけじゃなく 2 つ目の引数も無意味なもので ダメな関数さがすごいです
2 つ目の引数は分割数ですが 元の文字列を指定の数に分けるというものではないです
分けられるだけ分割したあとで 指定した数だけ前から取り出すというものです
メソッドチェーンで slice すれば済むものです
具体例でいうと 改行で分割して 「1 行目」 と 「2 行目以降」 の 2 つに分割したいのに 「1 行目」 と 「2 行目」 だけ返ってきて 3 行目以降は取得できません
あと 互換性の意味で仕方ない気もしますが 空文字指定で分割したときに絵文字が分割できません
split を使うなら 正規表現で unicode 指定が必要です
"🚀🔨".split("")
// (4) ["�", "�", "�", "�"]
"🔨🚀".split(new RegExp("", "u"))
// (2) ["🔨", "🚀"]
separate とか別の名前でいいので 便利な関数を作って欲しいものです