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

227
Visualizações
¿Cómo clasificar los datos del objeto de acuerdo con los criterios dados en otro objeto, cuando los dos objetos tienen las mismas claves?

Tengo dos objetos que necesito combinar de alguna manera para lograr el resultado deseado. Aquí hay un ejemplo de juguete.

Digamos que estoy realizando un experimento sobre una nueva dieta para ratones. Reuní 6 ratones y los alimenté con una dieta diferente. Después de varias semanas, pesé todos los ratones y registré el peso de cada uno. Esos pesos se dan en el siguiente objeto:

 const postExperimentWeights = { mickey: 20, minnie: 11, jerry: 15, stuart: 33, gonzales: 17, pinky: 50, };

Para concluir si alguna de las dietas tuvo éxito, tengo otro objeto de datos, con los pesos objetivo que se considerarían malos , mediocres o buenos , por ratón.

 const targetWeights = { mickey: { belowIsBad: 15, aboveIsGood: 22, }, minnie: { belowIsBad: 5, aboveIsGood: 10, }, jerry: { belowIsBad: 16, aboveIsGood: 20, }, stuart: { belowIsBad: 30, aboveIsGood: 40, }, gonzales: { belowIsBad: 10, aboveIsGood: 15, }, pinky: { belowIsBad: 60, aboveIsGood: 100, }, };

Y mi resultado deseado son 3 variables, cada una de las cuales contiene una matriz de nombres:

 const good = ['minnie', 'gonzales']; // those were above their respective `aboveIsGood` const mediocre = ['mickey', 'stuart']; // were between respective `belowIsBad` & `aboveIsGood` const bad = ['jerry', 'pinky']; // below respective `belowIsBad`

¿Existe una manera bastante simple o elegante de lograr el resultado deseado? Por lo general, prefiero utilizar un enfoque funcional, pero independientemente estaría agradecido por cualquier ayuda.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Repetiría los resultados de caducidad usando Object.entries() y simplemente los compararía con los valores objetivo:

 const postExperimentWeights = { mickey: 20, minnie: 11, jerry: 15, stuart: 33, gonzales: 17, pinky: 50, }; const targetWeights = { mickey: { belowIsBad: 15, aboveIsGood: 22, }, minnie: { belowIsBad: 5, aboveIsGood: 10, }, jerry: { belowIsBad: 16, aboveIsGood: 20, }, stuart: { belowIsBad: 30, aboveIsGood: 40, }, gonzales: { belowIsBad: 10, aboveIsGood: 15, }, pinky: { belowIsBad: 60, aboveIsGood: 100, }, }; function evaluateResults(input, target) { const good = []; const avg = []; const bad = []; for(const [key,value] of Object.entries(input)) { if(value < target[key].belowIsBad) { bad.push(key); }else if(value > target[key].aboveIsGood) { good.push(key); }else { avg.push(key); } } console.log("good:", good); console.log("avg:", avg); console.log("bad:", bad); } evaluateResults(postExperimentWeights,targetWeights);

about 4 years ago · Juan Pablo Isaza Relatório

0

Otra solución usando reduce usando push en lugar de concat

 const postExperimentWeights = {mickey: 20,minnie: 11,jerry: 15,stuart: 33,gonzales: 17,pinky: 50,}; const targetWeights = { mickey: {belowIsBad: 15,aboveIsGood: 22,},minnie: {belowIsBad: 5,aboveIsGood: 10,},jerry: {belowIsBad: 16,aboveIsGood: 20,},stuart: {belowIsBad: 30,aboveIsGood: 40,},gonzales: {belowIsBad: 10,aboveIsGood: 15,},pinky: {belowIsBad: 60,aboveIsGood: 100,},}; let res = Object.entries(postExperimentWeights).reduce((acc, [mouse,weight]) => { if (weight > targetWeights[mouse].aboveIsGood) acc.good.push(mouse) else if (targetWeights[mouse].belowIsBad < weight && weight <targetWeights[mouse].aboveIsGood) acc.mediocre.push(mouse) else if (targetWeights[mouse].belowIsBad > weight) acc.bad.push(mouse) return acc }, {good: [],mediocre: [],bad: []}) console.log(res)

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede usar este fragmento de código en el término más simple

 const mices = { mickey: 20, minnie: 11, jerry: 15, stuart: 33, gonzales: 17, pinky: 50 }; const targetWeights = { mickey: { belowIsBad: 15, aboveIsGood: 22 }, minnie: { belowIsBad: 5, aboveIsGood: 10 }, jerry: { belowIsBad: 16, aboveIsGood: 20 }, stuart: { belowIsBad: 30, aboveIsGood: 40 }, gonzales: { belowIsBad: 10, aboveIsGood: 15 }, pinky: { belowIsBad: 60, aboveIsGood: 100 } }; function findTheWeights(main, target) { const good = []; const mediocre = []; const bad = []; for (let mice in main) { const { belowIsBad, aboveIsGood } = target[mice]; main[mice] > aboveIsGood ? good.push(mice) : main[mice] < belowIsBad ? bad.push(mice) : mediocre.push(mice); } return { good, bad, mediocre }; } console.log(findTheWeights(mices, targetWeights));
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