いいえ、オブジェクトに含まれるプロパティの数(探しているもの)を示す組み込みのプロパティはありません。
私が考えることができる最も近いものは、2つのES5以降の機能Object.keys
(spec | MDN)とObject.getOwnPropertyNames
(spec | MDN)です。たとえば、次のように使用できますObject.keys
。
console.log(Object.keys(quesArr).length); // "3"
Object.keys
オブジェクト自体の列挙可能な文字列名付きプロパティの名前の配列を返します。しかし、内部的には(理論的には)使用したくないループです(もちろん、ES5以前の環境用のポリフィルはループを使用します)。列挙できない文字列名のプロパティも必要な場合は、Object.getOwnPropertyNames
代わりに使用します。
ES2015 +では、オブジェクトは、キーが文字列ではなくシンボルであるプロパティを持つことができます。Object.getOwnPropertySymbols
(spec | MDN)を使用すると、それらを取得できます。
FWIW、オブジェクトのArray
機能を使用する場合を除いて、オブジェクトを配列にしないでください。その代わり:
var quesArr = {};
quesArr["q101"] = "Your name?";
quesArr["q102"] = "Your age?";
quesArr["q103"] = "Your school?";
これらのキーは、(配列を使用するかプレーンオブジェクトを使用するかに関係なく)必要がない場合は、角かっこで囲まれた文字列リテラルとして指定する必要はありません。
var quesArr = {};
quesArr.q101 = "Your name?";
quesArr.q102 = "Your age?";
quesArr.q103 = "Your school?";
ただし、必要に応じて他の表記法を使用することもできます。ドット付き表記ではキーが有効な識別子名でなければならないことを除いて、これらはまったく同じです(括弧で囲まれた表記では何でもかまいません)。
あなたもこれを行うことができます:
var quesArr = {
q101: "Your name?",
q102: "Your age?",
q103: "Your school?"
};
または(キーが有効な識別子にならない場合):
var quesArr = {
"q101": "Your name?",
"q102": "Your age?",
"q103": "Your school?"
};
それらは一重引用符または二重引用符にすることができます。