• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

88
Vistas
Verifique la unicidad con valores de propiedad de objetos anidados en una matriz de objetos

Estoy devolviendo nulo si una matriz de objetos tiene los mismos valores de propiedad y está bien con las propiedades directas del objeto. Estoy intentando con valores de propiedades de objetos anidados en la misma matriz, pero está fallando. A continuación se muestra el código para el mismo.

 const getNullOrUniquePropertyValue = (arrToCheck, keyName, includeFullObject = null) => { const uniqueValues = [...new Set(arrToCheck.map((v) => v[keyName]))]; if (uniqueValues.size !== 1) { return null; } return includeFullObject ? arrToCheck[0].includeFullObject : arrToCheck[0].keyName; };

Y estoy llamando a la función anterior como se muestra a continuación

 getNullOrUniquePropertyValue( spaces, 'designHubProjectSpaceTypeId' )

Obtengo resultados nulos para la función anterior porque designHubProjectSpaceTypeId no es el mismo en la matriz.

Estoy pasando la propiedad de objetos anidados como se muestra a continuación, y está devolviendo un valor nulo para la condición a continuación, incluso si la matriz tiene los mismos valores.

 getNullOrUniquePropertyValue(spaces, 'spaceGeometry.ceilingHeight')

y la estructura espacial como esta como se muestra a continuación

 "spaces": [ { "spaceGeometry": { "ceilingHeight": 9 }, "designHubProjectSpaceTypeId": "some Id" }, { "spaceGeometry": { "ceilingHeight": 9 }, "designHubProjectSpaceTypeId": "some other Id" } ]

¿Alguien podría decirme dónde estoy haciendo mal con el código anterior?

¡¡Muchas gracias de antemano!!

almost 3 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Algunos comentarios:

  • v[keyName] no funcionará si keyName es una cadena con un punto ( "spaceGeometry.ceilingHeight" ), tendrá que dividir la cadena y buscar el valor en cada nivel manualmente
  • uniqueValues es una matriz, no un conjunto, así que use .length en lugar de .size

Hice una función simple getNestedValue() que usa reduce para extraer un valor anidado de un objeto.

 const spaces = [ { "spaceGeometry": { "ceilingHeight": 9 }, "designHubProjectSpaceTypeId": "some Id" }, { "spaceGeometry": { "ceilingHeight": 9 }, "designHubProjectSpaceTypeId": "some other Id" } ]; const getNestedValue = (obj, path) => path.split(".").reduce((accum, key) => accum[key], obj); const getNullOrUniquePropertyValue = (arrToCheck, keyName) => { const uniqueValues = [...new Set(arrToCheck.map((v) => getNestedValue(v, keyName)))]; if (uniqueValues.length !== 1) { return null; } return uniqueValues[0]; }; const result = getNullOrUniquePropertyValue( spaces, 'spaceGeometry.ceilingHeight' ); console.log(result);

includeFullObject de mi ejemplo porque no es relevante para este problema en particular y no tengo claro qué se supone que debe hacer. Si también tiene problemas con esa parte, hágame saber los detalles y puedo ayudarlo.

almost 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda