質問: 'url'; ``` このとき、obj1が obj1->atcoder->'200' となってほしいのに、 obj1->atcoder->0 ~ 200 となってしまいます。 ### 試したこと ''じゃなく、""で囲ってみてもやはりjavascriptの文法上変わりませんでした。 数値の文字列をキーに使用すると強制的に数字として扱われてしまうのでしょうか?
回答: > > 理由としては、クロームの拡張を作りたく、キーに数値の文字列を使用するのですが、数値として判定されてしまい、 > > > そんなことはありません。 String 型で格納されていますし、プロパティは "200" だけですよ。 ``` var obj1 = {}; obj1.atcoder = []; obj1.atcoder['200'] = 'url'; var keys = Object.keys(obj1.atcoder); console.log(typeof keys[0], keys[0]); // "string" "200" ``` > > obj1->atcoder->0 ~ 200 > > となってしまいます。 > > > 列挙の仕方に問題があるのでしょう。 Array#forEach は存在しないプロパティを列挙しませんが、for-of なら Object#hasOwnProperty を併用する必要があります。 * Object.prototype.hasOwnProperty() - JavaScript | MDN * Array.prototype.forEach() - JavaScript | MDN Re: ganariya2525 さん