Лучше всего использовать поиск по ключу (например, адрес электронной почты в нижнем регистре). И используйте правильную структуру данных (например, Object, Map, Set), чтобы вам не приходилось искать по всему массиву.
Минимально измененная версия вашего кода:
const usersByEmail = {};
class User{
constructor(email, name, age, lang){
this.email = email;
this.name = name;
this.age = age;
this.lang = lang
}
save(){
usersByEmail[this.email.toLowerCase()] = this;
}
}
function getOrCreateUser(email, name, age, lang){
if (email.toLowerCase() in usersByEmail) {
console.log('You have account with us');
} else {
new User(email ,name, age, lang).save();
}
return usersByEmail[email.toLowerCase()];
}
getOrCreateUser('s@s.com', 'sam', 32, 'en');
getOrCreateUser('s@s.com', 'samuel', 23, 'es');
getOrCreateUser('a@b.com', 'other guy', 44, 'en');
getOrCreateUser('s@s.com', 'sam', 32, 'en');
console.warn('as object...');
console.log(usersByEmail);
console.warn('as array...');
console.log(Object.values(usersByEmail));