Estoy confundido entre la diferencia entre las dos funciones indexOf y encontrar Index en una matriz.
La documentación dice
findIndex: devuelve el índice del primer elemento de la matriz donde el predicado es verdadero y -1 en caso contrario.
y
indexOf: devuelve el índice de la primera aparición de un valor en una matriz.
javascript
Rahul Singh
fuente
fuente
Respuestas:
La principal diferencia son los parámetros de estas funciones:
Array.prototype.indexOf()
espera un valor como primer parámetro. Esto hace que sea una buena opción encontrar el índice en matrices de tipos primitivos (como cadena, número o booleano).Array.prototype.findIndex()
espera una devolución de llamada como primer parámetro. Use esto si necesita el índice en matrices con tipos no primitivos (por ejemplo, objetos) o su condición de búsqueda es más compleja que solo un valor.Consulte los enlaces para ver ejemplos de ambos casos.
fuente
indexOf
funcionará para encontrar objetos. Es importante obtener la distinción de que acepta un solo Objeto, no solo un valor, y compara por igualdad, no por valor. Según los documentos de Mozilla: porindexOf() compares searchElement to elements of the Array using strict equality (the same method used by the === or triple-equals operator).
favor, modifique lafindIndex
explicación para incluir solo el elemento "o su condición de búsqueda es más compleja que un solo valor o referencia" para corregir esto, ya que me extravió originalmente. ¡Gracias![{a:1}].indexOf({a:1})
devuelve-1
aunque el objeto parece ser el mismo (pero no lo es). No estoy seguro de si esta información es útil en la respuesta, ya que puede resultar confusa. Si necesita saber más sobre el comportamiento exacto del idioma, debe leer la especificación..indexOf(NaN)
siempre volverá-1
porqueNaN==NaN
siempre esfalse
.NaN
es un tipo primitivo porquetypeof NaN
esnumber
y también sonnull
yundefined
, por lo que enmendaría esto para evitar decir queindexOf
funciona en tipos primitivosFindIndex es útil si desea encontrar el primer elemento que coincida con su predicado: en el ejemplo de W3C, hay números y coincidencias si la edad del cliente es mayor o igual a 18.
consola:
Puede encontrar un índice de elemento exacto con la función indexOf de Array, pero no puede pasar un predicado. Es más rápido si desea encontrar un elemento específico:
devoluciones:
El recuento de índices comienza en 0, por lo que el índice del primer elemento es 0.
fuente
La principal diferencia son los parámetros de estas funciones:
-> Array.prototype.indexOf () :
-> Array.prototype.findIndex () :
fuente
También puede utilizar
includes
:pero prefiero el
indexOf
método:fuente
indexOf
también es mucho más rápido.Otra diferencia es que con findIndex () el usuario puede aplicar alguna función y encontrar el elemento en la matriz que pasa la prueba.
Pero lo mismo no es cierto con el operador indexOf () . Un usuario puede simplemente verificar si el elemento particular existe en la matriz o no.
fuente
Simple: ¿Qué tipo de estructura de matriz está utilizando?
findIndex()
,;indexOf()
."Quiero encontrar el índice en una matriz de objetos , con la clave" Naranja ".
"Quiero encontrar el índice en una matriz simple ".
fuente
Puede probar los códigos a continuación: -
fuente