Ох, с чего бы начать...
1. Сразу бы отметил
for (var i = 0, len = arr.length; i < len; i += 1)
. Так как у вас инкримент происходит каждый раз на единицу, то вместо
i += 1
лучше написать
i++
.
2. В
var deleteUser;
и
deleteUser = i;
смысла нет, так как область видимости переменной
var i
уже будет внутри функции, а не цикла (в ECMAScript 2015 есть чудесная вещь
let
).
3. Нет смысла и в
if (deleteUser === undefined) return;
. Это лишние проверки того, что уже известно. Делайте действие сразу.
for (var i = 0, len = arr.length; i < len; i++) {
if (arr[i].name === name) arr.splice(i, 1);
}
4. Этот цикл будет продолжаться даже если пользователь уже найден. Так как вы не удаляете, как я вижу, массово, а только одного пользователя - делаем прерывание цикла.
for (var i = 0, len = arr.length; i < len; i++) {
if (arr[i].name === name){
arr.splice(i, 1);
break; /* или сразу return; */
}
}