[JavaScript] 文字列を Boolean に変換する 46 の方法
- 2017 5/25
- カテゴリー : 未分類
- JavaScript
- コメントを書く
JavaScript で文字列 (String) を Boolean に変換する方法をご紹介します。
前提
URL パラメータや POST リクエストで渡ってきた値を Boolean 型に変更することを想定しています。
true は “1”, false は “” で扱うアプローチ
true の場合は何かしらの文字列 (この場合は “1” ) を false の場合は空文字列 “” で扱うことで !! のイディオムで Boolean に変換できます。
!!'1'; // true !!''; // false |
true は “true”, false は “false” で扱うアプローチ
他のアプローチとしては、文字列として “true” , “false” などを完全一致して比較する方法があります。
var param = "true"; param === "true" ? true : false; // true var param = "false"; param === "true" ? true : false; // false var param = ""; param === "true" ? true : false; // false |
個人的には Boolean 型の true, false と、文字列の “true”, “false” がパット見で区別しにくくて、視認性が下がり、バグの温床となりえると考えています。
但し、クライアントサイドに Vue.js などを利用して Boolean 型で扱っている値を、サーバーサイドに POST リクエストを送る場合はこのアプローチで変換することになると思います。
toBoolean メソッドを定義する
String 型から Boolean 型に変換する toBoolean メソッドを定義して、これを使うという方法もあります。
/** * Boolean を表す文字列から Boolean を返す * * s が 'true' または '1' なら true、'false' または '0' なら false、 * そうでなければ def の値を返す * * @param {String} s Boolean を表す文字列 * @param {unknown} def s が 'true' もしくは 'false' でない場合に返す値 * * @return {Boolean} or def */ var toBoolean = function(s, def) { switch (s) { case 'true': case '1': case 'on': return true; case 'false': case '0': case 'off': return false; } return def; }; |
まとめ
文字列型から Boolean 型への変換は、Web アプリケーションを実装すると必ず出てくると思うので Node.js のメソッドや npm module でなにか良さそうなものがあるかもしれません。