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

286
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 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