Em vez de verificar se o elemento inserido já existe utilziando apenas o método .toUpperCase, eu utilizei outros métodos.
Método .normalize('NFD'): transforma a string em sua forma canônica. Separa cada caractere acentuado em seu caractere base. Vai decompor cada caractere acentuado em um caractere base mais um caractere de diacritico (como acentos) método .replace(/[\u0300-\u036f]/g, ''), remove todos os acentos das palavras método .toLowerCase ou .toUpperCase, transforma caracteres em maiúsculo ou minusculo
se utilizarmos apenas o método toUpperCase, nao é possível verificar os acentos da palavra. Por exemplo: limão seria diferente de limao (sem o tio).
Resumindo, o código ficaria assim:
elemento.valor.normalize('NFD').replace(/[\u0300-\u036f]/g, '').toLowerCase()
isso permite uma verificação mais segura.