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

161
Vistas
Javascript: encuentre una propiedad específica en el objeto por valor, que es una lista de cadenas

Tengo que encontrar una propiedad en una matriz de objetos por valor, que es una lista de cadenas.

Por ejemplo, tengo algo como esto:

 const colors ={ colors-1: [{color: 'blue'}], colors-2: [{color: 'gray'}, {color: 'red'}], colors-3: [{color: 'white'}] }

Y quiero obtener, por ejemplo, la propiedad colors-2 por cadena que está dentro del valor de la matriz.

Algo como esto:

 findPropertyByValue(colors, 'red')

Y salida:

 'colors-2'

¿Podría mostrarme cómo lograr esto? Gracias.

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

0

Así es como puedes lograr lo que quieres. Tenga en cuenta que agregué sus claves de objeto entre comillas, porque contienen - , no funcionaría de otra manera.

 const colors = { "colors-1": [{ color: "blue" }], "colors-2": [{ color: "gray" }, { color: "red" }], "colors-3": [{ color: "white" }] }; function findPropertyByValue(colors, value) { for (let color in colors) { if (colors[color].some((c) => c.color == value)) { return color; } } return ""; // if there isn't one } console.log(findPropertyByValue(colors, "red"));

about 4 years ago · Juan Pablo Isaza Denunciar

0

Aquí hay una solución usando find y some .
Toma las entradas del objeto de colors y encuentra la entrada que tiene un elemento con el color de entrada.
La búsqueda devuelve una entrada con [key,value] por lo que para obtener la clave, tome el elemento 0

Aquí asumí que un solo color tiene una clave única.
añadió el ?. antes de [0] (encadenamiento opcional: acceso solo si está disponible) para que cuando se ingrese un color que no se encuentra, no haya errores (devuelve undefined ). || operador utilizado para devolver un mensaje como "no encontrado" si el paso de búsqueda devuelve undefined

 const colors ={ 'colors-1': [{color: 'blue'}], 'colors-2': [{color: 'gray'}, {color: 'red'}], 'colors-3': [{color: 'white'}] } const findPropertyByValue = (obj,col) => Object.entries(obj).find(([k,v])=>v.some(({color}) => color===col))?.[0] || 'not found' console.log(findPropertyByValue(colors,'white')) console.log(findPropertyByValue(colors,'gray')) console.log(findPropertyByValue(colors,'red')) console.log(findPropertyByValue(colors,'blue')) console.log(findPropertyByValue(colors,'green'))

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puedes probar esto:

 const colors = { "colors-1": [{ color: "blue" }], "colors-2": [{ color: "gray" }, { color: "red" }], "colors-3": [{ color: "white" }], }; function findPropertyByValue(obj, colorName) { return Object.entries(obj).find((entry) => entry[1].some((color) => color.color === colorName) )?.[0]; } console.log(findPropertyByValue(colors, "red")); console.log(findPropertyByValue(colors, "not in list"));

Y esta solución devolverá todos los campos con el color especificado:

 const colors = { "colors-1": [{ color: "blue" }], "colors-2": [{ color: "gray" }, { color: "red" }], "colors-3": [{ color: "white" }], "colors-4": [{ color: "white" }, { color: "red" }], }; function findPropertyByValue(obj, colorName) { return Object.entries(obj).reduce( (acc, entry) => entry[1].some((color) => color.color === colorName) ? [...acc, entry[0]] : acc, [] ); } console.log(findPropertyByValue(colors, "red")); console.log(findPropertyByValue(colors, "not in list"));
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