Tech
console.log すると Array や Object になってしまう!
階層が深いオブジェクトを console.log で出力すると、深い箇所が Array や Object みたいな感じになって見れない なんてことありますよね?
私はあります。そして困っていました。
が、解決策もよくわからず、Array や Object になっている階層のオブジェクトを console.log の引数に入れる みたいなパワープレイをしていました。
例: console.log(foo.bar[0].baz);
みんなそうしていますよね?そうするしかないと思っていました。
解決策: console.dir もしくは JSON.stringify を使う
console.dir
console.dir(foo, { depth: null });みたいに指定することで、深い階層も出力することができます。
depthには数字を指定することも可能です。指定した数字の階層まで出力してくれます。
null だと全部出力です。
詳しくはMDNを
https://developer.mozilla.org/ja/docs/Web/API/console/dir_static
JSON.stringify
console.log(JSON.stringify(foo, null, 2));みたいな感じで使います。
ログに出力したいだけであれば第二引数はnullでいいでしょう。
第三引数はインデントのスペースの数を指定しています。
こちらも詳しくはMDNを
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
おわりに
もっと早く知りたかった、!
JSON.stringify も存在は知っていて使ったりしていましたが、まさか Array や Object になってしまう問題にも使えるとは、、
でもこれからはconsole.log(foo.bar[0].baz); みたいなことをしなくていいのでよかったです。
参考になれば幸いです。