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

163
Visualizações
Cómo hacer una matriz de objetos con valores limitados

Lo siento, de antemano si el título no está claro, pero es difícil describirlo con palabras.

Lo que tengo:

 const obj = { a: 5, b: 3, c: 0, d: 9 }

Lo que quiero tener:

 const arr = [[a, 5] ,[b, 3]]

Básicamente, trato de escribir una función que me devuelva una serie de entradas, pero también cumple con los requisitos:

  • no quiero objetos cuando los valores son iguales a 0
  • la suma de los valores debe ser menor que 10

El primer punto es fácil para mí y puedo hacerlo por

 Object.entries(obj).filter(([k, v])=> v !== 0)

pero no puedo manejar con el segundo.

¿Puedo usar reduce aquí?

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

0

Puede usar un cierre y un IIFE para almacenar la suma

 Object.entries(obj).filter((() => { let sum = 0; return ([k, v]) => { sum += v; return v !== 0 && sum < 10; }; })());

Ejemplos:

 function convert(obj) { return Object.entries(obj).filter((() => { let sum = 0; return ([k, v]) => { sum += v; return v !== 0 && sum < 10; }; })()); } const obj = { a: 5, b: 3, c: 0, d: 9 }; const arr = convert(obj); console.log(arr); const obj2 = { a: 0, b: 0, c: 8, d: 0, e: 1, f: 5 }; const arr2 = convert(obj2); console.log(arr2); const obj3 = { a: 12 }; const arr3 = convert(obj3); console.log(arr3);

about 4 years ago · Juan Pablo Isaza Relatório

0

La respuesta de @jabaa es genial y deberías aceptarla.

Solo para confirmar tu intuición, podrías haber usado reduce , pero se complicaría bastante:

 const obj = { a: 5, b: 3, c: 0, d: 9 } const result = Object.entries(obj).reduce( (o, newPair) => { o.sum += newPair[1]; newPair[1] !== 0 && o.sum < 10 && o.pairs.push(newPair); return o; }, { sum: 0, pairs: [] } ).pairs; console.log(result)

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