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

196
Visualizações
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.

over 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

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"));

over 4 years ago · Juan Pablo Isaza Relatório

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

over 4 years ago · Juan Pablo Isaza Relatório

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"));
over 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