Ответ 1
Нет, нет встроенного свойства, которое сообщает вам, сколько свойств имеет объект (это то, что вы ищете).
Ближайшим, о котором я могу думать, является функция ES5 и выше, Object.keys
, которую вы можете использовать следующим образом:
console.log(Object.keys(quesArr).length); // "3"
Object.keys
возвращает массив имен собственных собственных свойств объекта. Но внутренне, конечно, это тот цикл, который вы не хотели использовать (и polyfill для него для сред предварительного ES5 использует цикл, конечно).
Там также есть еще одна функция ES5 +, Object.getOwnPropertyNames
, которая возвращает массив имен собственных объектов, независимо от того, являются ли они перечислим.
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?"
};