В последних версиях браузера вы можете использовать фильтр
var size = arr.filter(function(value) { return value !== undefined }).length;
console.log(size);
Другой способ, если браузер поддерживает indexOf для массивов:
var size = arr.slice(0).sort().indexOf(undefined);
Если для абсурда в массиве есть элементы, состоящие только из одной цифры, вы можете использовать этот подвох:
console.log(arr.join("").length);
Есть несколько методов, которые вы можете использовать, но в конце мы должны увидеть, действительно ли это стоит делать вместо цикла.