Estou confuso entre a diferença entre as duas funções indexOf e encontrar Index em uma matriz.
A documentação diz
findIndex - Retorna o índice do primeiro elemento da matriz em que predicado é verdadeiro e -1 caso contrário.
e
indexOf - Retorna o índice da primeira ocorrência de um valor em uma matriz.
javascript
Rahul Singh
fonte
fonte
Respostas:
A principal diferença são os parâmetros dessas funções:
Array.prototype.indexOf()
espera um valor como primeiro parâmetro. Isso faz com que seja uma boa opção encontrar o índice em matrizes de tipos primitivos (como string, número ou booleano).Array.prototype.findIndex()
espera um retorno de chamada como primeiro parâmetro. Use isso se você precisar do índice em matrizes com tipos não primitivos (por exemplo, objetos) ou se sua condição de localização for mais complexa do que apenas um valor.Veja os links para exemplos de ambos os casos.
fonte
indexOf
funcionará para encontrar objetos. É importante obter a distinção de que ele aceita um único objeto, não apenas um valor, e compara pela igualdade, não pelo valor. De acordo com os documentos da Mozilla:indexOf() compares searchElement to elements of the Array using strict equality (the same method used by the === or triple-equals operator).
altere afindIndex
explicação para incluir apenas o membro "ou sua condição de descoberta é mais complexa do que apenas um único valor ou referência" para corrigir isso, pois isso me desviou originalmente. Obrigado![{a:1}].indexOf({a:1})
retorna-1
embora o objeto pareça ser o mesmo (mas não é). Não tenho certeza se essas informações são úteis na resposta, pois podem ser confusas. Se você precisar saber mais sobre o comportamento exato da linguagem, leia a especificação..indexOf(NaN)
sempre retornará-1
porqueNaN==NaN
é semprefalse
.NaN
é um tipo primitivo, porquetypeof NaN
énumber
e por isso sãonull
eundefined
, por isso gostaria de alterar isso para evitar dizendoindexOf
obras em tipos primitivosFindIndex é útil se você deseja encontrar o primeiro elemento que corresponde ao seu predicado: No exemplo do W3C, existem números e correspondências se a idade do cliente for maior ou igual a 18.
console:
Você pode encontrar um índice exato de elemento com a função indexOf de Array, mas não pode passar um predicado. É mais rápido se você deseja encontrar um elemento específico:
retorna:
A contagem do índice começa em 0, então o primeiro índice do elemento é 0.
fonte
A principal diferença são os parâmetros dessas funções:
-> Array.prototype.indexOf () :
-> Array.prototype.findIndex () :
fonte
Você também pode usar
includes
:mas eu prefiro o
indexOf
método:fonte
indexOf
é muito mais rápido também.Outra diferença é que, com o findIndex (), o usuário pode aplicar alguma função e encontrar o elemento na matriz que passa no teste.
Mas o mesmo não acontece com o operador indexOf () . Um usuário pode apenas verificar se o elemento específico existe ou não na matriz.
fonte
Simples - Que tipo de estrutura de matriz você está usando?
findIndex()
,;indexOf()
,."Quero encontrar o índice em uma matriz de objetos , com a tecla" Laranja ".
"Eu quero encontrar o índice em uma matriz simples ".
fonte
Você pode tentar os códigos abaixo: -
fonte