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

284
Vistas
¿Cómo devolver claves que tienen valores vacíos de una matriz de objetos como una cadena en JavaScript?

Tengo una matriz de objetos donde algunas claves devuelven un valor vacío. Cuando aparece un valor vacío, me gustaría devolver esa clave como una cadena.

Por ejemplo esta matriz:

 'products': [{ 'name': 'Test product', 'id': '', 'price': '', 'brand': 'AwesomeBrand', 'colour': 'Gray', 'quantity': 1 }, { 'name': '', 'id': '123', 'price': '', 'brand': 'AwesomeBrand', 'colour': 'Black', 'quantity': 1 }]

En el ejemplo anterior, quiero devolver lo siguiente:

 'id, price, name'

He intentado lo siguiente que hace el trabajo. Sin embargo, todavía regresa como una matriz. Luego, JSON.strigify, pero eso devuelve una cadena fea. Intenté reemplazarlo/limpiarlo RegEx, sin embargo, el programa que estoy usando usa una versión de JavaScript en espacio aislado, por lo que no se puede acceder a algunas funciones.

Estoy luchando por comprender el concepto de acceder a claves y valores en una matriz de objetos. Así que eso es parte de mi problema.

 var productArray = ecomValues || []; var emptyArray = []; var output = productArray.reduce(function (previousValue, currentValue, currentIndex) { var keys = Object.keys(currentValue).filter(function (key) { return !currentValue[key];/ }); if (keys.length) { previousValue[currentIndex] = keys; } return previousValue; }, {}); var emptyValues = output; emptyArray.push(emptyValues);

¿Alguien que me pueda ayudar con mi problema?

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

0

Puede iterar la matriz y obtener las claves y agregar las claves si se encuentra un valor falso.

 const products = [{ name: 'Test product', id: '', price: '', brand: 'AwesomeBrand', colour: 'Gray', quantity: 1 }, { name: '', id: '123', price: '', brand: 'AwesomeBrand', colour: 'Black', quantity: 1 }], empty = Array.from(products.reduce((s, o) => { Object.keys(o).forEach(k => { if (o[k] === '') s.add(k); }); return s; }, new Set)); console.log(empty.join(', '));

Una solución sin Set .

 const products = [{ name: 'Test product', id: '', price: '', brand: 'AwesomeBrand', colour: 'Gray', quantity: 1 }, { name: '', id: '123', price: '', brand: 'AwesomeBrand', colour: 'Black', quantity: 1 }], empty = Array.from(products.reduce((r, o) => { Object.keys(o).forEach(k => { if (o[k] === '' && !r.includes(k)) r.push(k); }); return r; }, [])); console.log(empty.join(', '));

about 4 years ago · Juan Pablo Isaza Denunciar

0

Podemos usar reduce() para crear una matriz con todas las claves que están vacías

  1. Para encontrar las teclas vacías, podemos usar esto como ejemplo .

  2. Luego, eliminamos todas las claves duplicadas.

  3. Y join() la matriz a una cadena

 const data = {'products': [{'name': 'Test product', 'id': '', 'price': '', 'brand': 'AwesomeBrand', 'colour': 'Gray', 'quantity': 1 }, {'name': '', 'id': '123', 'price': '', 'brand': 'AwesomeBrand', 'colour': 'Black', 'quantity': 1 }]}; const emptyKeys = data.products.reduce((prev, cur) => [ ...prev, ...Object.keys(cur).filter((key) => !cur[key]) ], []) .filter((v, i, a) => a.indexOf(v) === i) .join(', '); console.log(emptyKeys);

 id, price, name
about 4 years ago · Juan Pablo Isaza Denunciar

0

Itere products con Array.flatMap() , filtre todas las claves con valores que no estén vacíos y luego haga que la matriz sea única mediante el uso de un Set y se extienda a una matriz:

 const products = [{ name: 'Test product', id: '', price: '', brand: 'AwesomeBrand', colour: 'Gray', quantity: 1 }, { name: '', id: '123', price: '', brand: 'AwesomeBrand', colour: 'Black', quantity: 1 }] const result = [...new Set(products.flatMap( obj => Object.keys(obj) .filter(key => obj[key] === '') ))] console.log(result);

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