Crear índices en JavaScript

Si tenemos un array de objetos y queremos obtener un elemento a partir del valor de sus propiedades, normalmente utilizaremos la función find para realizar esta búsqueda:

const found = myArray.find(i => i.id === 1);

Sin embargo si nuestro array es muy grande y realizamos múltiples búsquedas, esto es poco eficiente ya que en cada búsqueda tiene que recorrer todo el array hasta que encuentre la coincidencia.

Esto podemos mejorarlo creando un índice para este array. Esto será un objeto que tendrá como propiedad la propiedad sobre la que hacemos la búsqueda y como valor el objeto a buscar.

La siguiente función nos permite crear un índice de manera muy simple:

const keyBy = (arr, key) => arr.reduce((acc, el) => {
    acc[el[key]] = el;
    return acc;
})

Ejemplo de uso:

const keyBy = (arr, key) => arr.reduce((acc, el) => {
    acc[el[key]] = el;
    return acc;
})

// Generar el índice a partir el array
const myIndex = keyBy(myArray, 'id');

// Obtener el objeto buscado a partir del valor (1)
const found = myIndex[1];

👉  Implementar Spintax en Google Sheets

👇Tu comentario