普段は機械学習系のプログラミングで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
どちらになるかはこちらに纏められていてわかりやすいです。