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

276
Visualizações
Eliminar duplicado del objeto anidado de matriz

Estoy tratando de eliminar el duplicado de la siguiente matriz de Objeto que tiene algún elemento anidado con matriz

A continuación se muestra mi matriz.

 { field: 'A', value: { key_A: ['ajd', 'ajd', 'kajd'], }, }, { field: 'A', value: { key_B: ['123', '4', '45', '94'], }, }, { field: 'A', value: { key_A: ['ajd', 'ajd', ''], }, }, { field: 'A', value: { key_B: ['123', '4', '45'], }, }, { field: 'Z', value: { key_A: ['ajdm', 'askjd', 'kajd'], }, }, { field: 'Z', value: { key_B: ['13', '123', '1823'], }, }, { field: 'Z', value: { key_A: ['ajdm', 'askjd', ''], }, }, { field: 'Z', value: { key_B: ['13', '123', ''], }, }, ];

y quiero mantener la primera clave debajo de cada campo, es decir, la primera clave_A en el campo 'A' y la primera clave_B en el campo 'A'

lo mismo para el campo 'Z'

tan final o/p:

 { field: 'A', value: { key_A: ['ajd', 'ajd', 'kajd'], }, }, { field: 'A', value: { key_B: ['123', '4', '45', '94'], }, }, { field: 'Z', value: { key_A: ['ajdm', 'askjd', 'kajd'], }, }, { field: 'Z', value: { key_B: ['13', '123', '1823'], }, }, ];

Probé algo de lógica con el filtro en bucle sobre la matriz, pero para el anidado no pude encontrar una lógica.

about 4 years ago · Santiago Gelvez
2 Respostas
Responde à pergunta

0

Una posible implementación utilizando la respuesta proporcionada aquí . findIndex proporciona el índice del primer elemento que cumple la condición y, por lo tanto, el filter filtra los primeros elementos que satisfacen la condición.
Object.keys(t.value)[0] da "key_A" o "key_B" dependiendo del elemento

 let arr = [ { field: 'A', value: { key_A: ['ajd', 'ajd', 'kajd'], }, }, { field: 'A', value: { key_B: ['123', '4', '45', '94'], }, }, { field: 'A', value: { key_A: ['ajd', 'ajd', ''], }, }, { field: 'A', value: { key_B: ['123', '4', '45'], }, }, { field: 'Z', value: { key_A: ['ajdm', 'askjd', 'kajd'], }, }, { field: 'Z', value: { key_B: ['13', '123', '1823'], }, }, { field: 'Z', value: { key_A: ['ajdm', 'askjd', ''], }, }, { field:'Z', value: { key_B: ['13', '123', ''], }, }, ]; let res = arr.filter((v, i, self) => i === self.findIndex((t) => ( t.field === v.field && Object.keys(t.value)[0] === Object.keys(v.value)[0] )) ) console.log(res)
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Santiago Gelvez Relatório

0

Algo como esto debería hacerlo.

 interface Address { address: string, city: string, state: string, zip: number } const addresses: Address[] = [ { address: "1234 Main St", city: "San Diego", state: "CA", zip: 92014 }, { address: "4444 Main St", city: "San Diego", state: "CA", zip: 92014 }, { address: "5555 Main St", city: "San Diego", state: "CA", zip: 92014 }, { address: "6666 Main St", city: "San Diego", state: "CA", zip: 92014 }, { address: "7777 Main St", city: "San Diego", state: "CA", zip: 92014 } ] function delay(time: number) { return new Promise(resolve => setTimeout(resolve, time)); } const apiCaller = async(addr: Address) => { await delay(0.5); return `Got ${addr.address}` } const apiRunner = async () => { const results: PromiseSettledResult<string>[] = []; let promises: Promise<string>[] = []; for (const address of addresses) { promises.push(apiCaller(address)); if (promises.length >= 10) { const rez = await Promise.allSettled(promises); results.push(...rez); promises = []; } } if (promises.length > 0) { const rez = await Promise.allSettled(promises); results.push(...rez); } return results; }
about 4 years ago · Santiago Gelvez 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