7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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 どちらになるかはこちらに纏められていてわかりやすいです。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?