【js】0 と 1 のカッコいい入れ替え方

こんばんは。
たかきです。

今日会社でコードレビューをしていたらこんなコードを見ました。

baa = baa === 0 ? 1 : 0;

「0 なら 1、 1 なら 0」に変換するコードですね。

三項演算子が苦手な方は以下のものと同じ処理をすると考えてください。

if(baa === 0) {
    baa = 1;
}
else {
    baa = 0;
}

あるいは、

switch(baa) {
  case 0:
    baa = 1;
    break;
  default:
    baa = 0;
    break;
}

こんな感じ?
この処理に switch を使ってる人がいたら注意しますけど。

で、はじめのコードを思い出してみると、

baa = baa === 0 ? 1 : 0;

こうでしたね。
もしも true を flase に、 false を true にするのならおそらくほとんどの人がこう書くでしょう。

baa = !baa;

boolean をトグルするときの定型文ですね。

しかし今回は boolean ぽいけど相手は 0 と 1。
(そもそも boolean を書けばいいように設計しとけよと思うでしょうけど、サーバーサイドのやんごとなき事情とかでこうしなきゃいけないシーンを考えます。)

なんかいい書き方ないかなぁ、やっぱ無理かなぁ、と逡巡したのち、わたくし姫野は思いつきました。
イカスやつ。

baa = [1, 0][baa];

これだけ。
どーよ?
かっこよくね?
頭いいべ?
よく読んで。ちゃんと 0 と 1 入れ替わるでしょ?

一応解説しておくと、

[1, 0]

という配列の baa番目を baa に代入するんですね。

つまり
[1, 0][0] は 1、
[1, 0][1] は 0
ってことです。

真似していいですよ。

カテゴリー: front-end, JavaScript, Work, エンジニア パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*