LoginSignup
7
5

More than 3 years have passed since last update.

Pythonを使う人がJavaScriptの空辞書の判定ではまった話

Posted at

普段は機械学習系のプログラミングでPythonを使うことが多いのですが、画面回りもやる必要があり、その時JavaScriptの辞書を if 文で判定するコードであれ?と思ったこと。勘違いと言ってしまうとそれまでですが。

Pythonの場合

Python で辞書が空かどうか判定するのに以下のような if 文を書いていました。x が空辞書やnullの時は False になります。

sample.py
x = {}
if x:
  print("xは空ではない");
else:
  print("xは空です");

実行結果

xは空です

JavaScriptの場合

一方で JavaScript だと空辞書の場合 True になります。

sample.js
var x = {};
if (x) {
  console.log("xは空ではない");
} else {
  console.log("xは空です");
}
xは空ではない

空かどうか判定する方法はいろいろあるようですが Object.keys(x) でキーの数を調べることでできるようです。

sample.js
var x = {};
if (Object.keys(x).length) {
  console.log("xは空ではない");
} else {
  console.log("xは空です");
}

つい、うっかりPythonと同じように考えてコーディングしてしまい、「うまく動かないな」と悩んでしまいました・・・

参考文献

JavaScriptの if(x) での判定結果がオブジェクトごと True/False どちらになるかはこちらに纏められていてわかりやすいです。
- [JavaScript] null とか undefined とか 0 とか 空文字(”) とか false とかの判定について

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5