Ваш код не совсем корректен. Оператор delete не предназначен для работы с массивами, т.к. не обновляет длину. То же касается и присвоения
arr[4] = 'four'
. Такое присвоение используется только если 4-й элемент уже есть и его нужно изменить.
Для удаления/добавления элементов нужно использовать только методы, специально предназначенные для массивов: push/pop, shift/unshift, splice. Только в этом случае длина будет правильной.
Т.е. для определения длины вполне можно использовать свойство length (оно для этого и предназначено), но нужно использовать методы массива для добавления/удаления элементов.
Например:
var arr = ["test", "two", 3];
console.log(arr.length); // 3
arr.shift(0);
console.log(arr.length); // 2
arr.push('four');
console.log(arr.length); // 3
arr.splice(0, 3);
console.log(arr.length); // 0