Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

109
Visualizações
Cómo escribir usando mecanografiado una función capaz de agregar o reemplazar un elemento de una matriz de Objetos

Quiero crear una función que tome como entrada una matriz de Objetos, un Objeto y una clave y devuelva una Matriz de Objetos que contenga el nuevo Objeto en la posición 0 si es un Objeto nuevo o en la misma posición si no es un nuevo una. La clave se usa para comparar los Objetos y puede ser solo una cadena o un número.

Escribí este pero es obligatorio tener una propiedad de identificación dentro de los Objetos.

 export function addOrReplaceById<T extends Array<{ id: string }>>( arrayOfObjects: T, newObject: { id: string } ): T { const index = arrayOfObjects.findIndex((object) => object.id === newObject.id); if (index === -1) { arrayOfObjects.unshift(newObject); } else { arrayOfObjects[index] = newObject; } return arrayOfObjects; }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Considere este ejemplo:

 export function addOrReplaceById< Obj extends { id: string }, Arr extends Array<Obj> >( arrayOfObjects: [...Arr], newObject: Obj ) { const data = arrayOfObjects .reduce<{ exists: boolean, arr: Obj[] }>( (acc, obj) => obj.id === newObject.id ? { ...acc, exists: true, arr: [...acc.arr, newObject] } : acc, { exists: false, arr: [] }); return data.exists ? data.arr : [newObject, ...data.arr] }

El ejemplo anterior reducirá un poco la complejidad. la operación unshift es costosa. Es por eso que creé una nueva estructura de datos {exists: boolean, arr:Obj[]} .

También he devuelto una nueva matriz en lugar de la mutación de la matriz existente

about 4 years ago · Juan Pablo Isaza Relatório

0

Puedes escribir tu función así:

 export function addOrReplaceByKey<T extends {[x: string]: any}>( arrayOfObjects: T[], newObject: T, key: keyof T, ): T[] { const index = arrayOfObjects.findIndex((object) => object[key] === newObject[key]); if (index === -1) { arrayOfObjects.unshift(newObject); } else { arrayOfObjects[index] = newObject; } return arrayOfObjects; };
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda