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

168
Visualizações
Ordenar un objeto y eliminar duplicados

Dado un objeto como este. Cómo escribir una función que devolverá el objeto con claves ordenadas y eliminará los duplicados del primer valor, por ejemplo

 const initialObj={ "2": ["A", "B", "D", "A"], "1": ["A", "B", "C"], }; const output = { "1": ["C"], "2": ["A", "B", "D"], } initial = { "1": ["C", "F", "G"], "2": ["A", "B", "C"], "3": ["A", "B", "D"], } output = { "1": ["F", "G"], "2": ["C"], "3": ["A", "B", "D"], }
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

 const initialObj= { "1": ["C", "F", "G"], "2": ["A", "B", "C"], "3": ["A", "B", "D"], } function sortAndRemove(obj) { var keys = Object.keys(obj) keys.sort().reverse() seenBefore = new Set() answer = {} for (var key of keys) { for (var value of obj[key]) { if (!seenBefore.has(value)) { answer[key] = [...(answer[key] || []), value] seenBefore.add(value) } } } return answer } console.log(sortAndRemove(initialObj))

about 4 years ago · Juan Pablo Isaza Relatório

0

Aquí hay un conjunto de herramientas.

Suponiendo que las claves son cadenas y no números

Si desea una ordenación numérica, debemos convertir a int

 const deDupe = (arr1,arr2) => arr1.filter(val => !arr2.includes(val)); const sortDedupe = obj => { const newObj = {} const order = Object.keys(obj); // get the keys order.sort(); // sort them order.forEach(key => newObj[key] = obj[key]); // reorder the object for (let i=0;i<order.length-1;i++) { newObj[order[i]] = deDupe(newObj[order[i]],newObj[order[i+1]]); //dedupe based on next } const last = order.pop() newObj[last] = [...new Set(newObj[last])]; // dedupe last return newObj } const initialObj={ "2": ["A", "B", "D", "A"], "1": ["A", "B", "C"], }; /* const output = { "1": ["C"], "2": ["A", "B", "D"], }*/ const initial = { "1": ["C", "F", "G"], "2": ["A", "B", "C"], "3": ["A", "B", "D"], } /* output = { "1": ["F", "G"], "2": ["C"], "3": ["A", "B", "D"], }*/ let output1 = sortDedupe(initialObj) console.log(output1) let output2 = sortDedupe(initial) console.log(output2)

about 4 years ago · Juan Pablo Isaza Relatório

0

Teniendo en cuenta el caso de que obtuve el algoritmo que describiste, el siguiente fragmento sería el truco:

 const initial1 = { "2": ["A", "B", "D", "A"], "1": ["A", "B", "C"], }; const initial2 = { "1": ["C", "F", "G"], "2": ["A", "B", "C"], "3": ["A", "B", "D"], } // removing duplicates from array const removeDuplicates = ({ arr, toRemove }) => { return arr.filter(char => !toRemove.includes(char)) } // returns a sorted array! const sortObjKeys = (obj) => { const entries = Object.entries(obj) const sorted = entries.sort(([key1], [key2]) => { return Number(key1) - Number(key2) }) return sorted } // iterating over the sorted array (starting from the end) const reducer = (sorted) => { const { ret } = sorted.reverse().reduce((a, [key, val]) => { const cleared = removeDuplicates({ arr: [...new Set([...val])], toRemove: a.toRemove }) a.ret = [ [key, cleared], ...a.ret, ] a.toRemove = [...new Set([...a.toRemove, ...val])] return a }, { ret: [], toRemove: [] }) return ret } // putting it all together const processSortedArr = (obj) => { const sorted = sortObjKeys(obj) const ret = reducer(sorted) return Object.fromEntries(ret) } console.log('output1', processSortedArr(initial1)) console.log('output2', processSortedArr(initial2))

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