Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

279
Vistas
Javascript: ¿cómo puedo construir una oración para mostrar datos en función de si los valores de datos son> 0?

Obtengo datos de una API, solo un objeto con valores numéricos relacionados con cada clave, y luego construyo una oración simple para mostrar los datos al usuario. Sin embargo, solo quiero incluir un valor de los datos si es mayor que 0. Aquí hay un ejemplo con datos simulados:

 let data = {red: 100, blue: 200, yellow: 0, green: 400}; let resultsSentence = `We found ${data.red} red posts, ${data.blue} blue posts, and ${data.green} green posts.` console.log(resultsSentence)

Como puede ver, dejé el amarillo fuera de la oración de resultados porque tiene un valor de 0 . Por supuesto, necesito poder generar esta oración dinámicamente en función de los datos que se devuelvan. Si uso condicionales, será un desastre, ya que hay demasiados escenarios posibles (escribir 15 declaraciones if/else no parece un buen enfoque).

¿Cómo puedo manejar esto? Necesito generar la oración en función de los valores que sean > 0 . Al principio pensé, fácil, simplemente insertaré todos los valores en una matriz, verificaré los 0 y eliminaré cualquier elemento que sea igual a 0 de la matriz. Luego, construya la oración en función de la longitud de la matriz, es decir, si la longitud de la matriz es 3 , entonces haga referencia a cada valor como array[0] , array[1] , array[2] . Sin embargo, esto presenta un problema, ya que necesito poder aclarar qué valores son cuáles en la oración. Por ejemplo, si elimino el yellow de la matriz, la longitud de la matriz será 3 , pero no sabré qué valor se eliminó.

¿Alguien puede ayudarme a encontrar una solución eficiente para esto?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Puede usar un bucle for..of simple para iterar sobre las claves y los valores del objeto, construyendo su cadena dentro de él.

Esto da como resultado una coma oxford , pero puede eliminarla en el condicional (donde elige usar and en su lugar).

 let data = {red: 100, blue: 200, yellow: 0, green: 400}; let res = 'We found ' // Keep a record of how many keys we've processed so we know when we're at the end let i = 1 for (const [k, v] of Object.entries(data)) { // we could just continue early here, but we want to keep adding to `i` if (v > 0) { // This is the last key so use `and` not a comma if (i === Object.keys(data).length) { res += `and ${v} ${k} posts.` } else { res += `${v} ${k} posts, ` } } i++ } console.log(res)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Prueba esto

 let data = {red: 100, blue: 200, yellow: 0, green: 400}; let str = []; let len = Object.keys(data).length; Object.entries(data).forEach(([key, val], index) => { let isLast = (len - 1 == index) && str.length > 0; if(val > 0) str.push((isLast ? 'and ' : '') + `${val} ${key} posts`); }) let resultsSentence = 'We found ' + str.join(', ') console.log(resultsSentence)

about 4 years ago · Juan Pablo Isaza Denunciar

0

prueba esto (sin dependencias)

 const keys = Object.keys(data) const values = Object.values(data) let string = 'we found' values.map((item, index)=>{ if(item > 0){ string += ` ${item} ${keys[index]} posts,` } }) console.log(string.slice(0,-1)+'.')

prueba con lodash como

 const _ = require('lodash') let data = {red: 100, blue: 200, yellow: 0, green: 400}; let string = 'we found' _.map(data,(value,key)=>{ if(value > 0){ string += ` ${value} ${key} posts,` } }) console.log(string.slice(0,-1)+'.')
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda