Interessante. Acho meio tenso em uma aplicação ter undefined
em uma array, não me parece algo comum.
Mas para resolver eu faria o seguinte, se descobrisse isso em build time, eu usaria um filter
antes do find
para eliminar valores false
:
var array = [1, 2, undefined];
var result = array.filter(Boolean).find(n => isNaN(n));
console.log(result); // undefined
array = [1, 2, 3];
var result = array.filter(Boolean).find(n => isNaN(n));
console.log(result); // undefined
O resultado nas duas situações continua sendo undefined
, mas agora tenho certeza que o motivo é:
- "Nada foi encontrado"
E não:
- "Um
undefined
foi encontrado"
O problema que vejo de usar findIndex
é que ele retorna o índice do item, e o find
retorna o próprio item.
Nesse caso para obter o resultado verdadeiro teria que verificar se o resultado é -1. E só se isso for falso, criar a variável:
// var array = [1, 2, undefined];
var array = [1, 2, 3];
var index = array.findIndex(n => isNaN(n));
if (index === -1) {
throw new Error('Item não encontrado')
}
var result = array[index];
console.log(result);
Mas é uma questão legal, daquelas que o JS adora fazer auhsuahsuahs