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

153
Visualizações
problemas con la iteración a través de valores en pares clave/valor

Escribí una función que busca a través de los valores de un objeto. La clave se devuelve cuando se confirma que la clave coincide con el índice del valor almacenado en la matriz.

p.ej. 19 está en el índice 0 en la matriz, y en el objeto, la clave para 19 es 0. Dado que esto coincide, se devuelve la clave.

Sin embargo, si el valor se encuentra en el objeto pero el índice es incorrecto en la matriz, se devuelve -2. Finalmente, cuando no se encuentra un valor en el objeto, se devuelve -1.

Desafortunadamente, mi función no funciona según lo previsto. Tenía la sensación de que la función no reconoce los valores en el objeto como el mismo tipo de datos que los de la matriz, así que usé == en lugar de === para las comparaciones, pero el resultado es el mismo.

 const exampleObject = { 0: 19, 1: 20, 2: 21, 3: 22 }; function getKey(array, object, value) { for (const prop in object) { if (object.hasOwnProperty(prop)) { if (object[prop] === value && array[object[prop]] == value ){ return prop } else if (object[prop] === value && array[object[prop]] !== value ){ return -2 } } } return -1 } console.log(getKey([19,20,22,21],exampleObject,20)) //returns -2 which is wrong as the index is correct console.log(getKey([19,20,22,21],exampleObject,25)) //returns -1 which is correct console.log(getKey([19,20,22,21],exampleObject,22)) //returns -2 which is correct console.log(getKey([19,20,22,21],exampleObject,19)) //returns -2 which is wrong as the index is correct

Editar: utilicé el código de este sitio y lo ajusté un poco: https://www.geeksforgeeks.org/how-to-get-a-key-in-a-javascript-object-by-its-value/

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Solo necesita usar array[prop] en lugar de array[object[prop]] ya que object[prop] devolverá el valor pero desea la clave.

 const exampleObject = { 0: 19, 1: 20, 2: 21, 3: 22 }; function getKey(array, object, value) { for (const prop in object) { if (object.hasOwnProperty(prop)) { if (object[prop] === value && array[prop] === value) { return prop } else if (object[prop] === value && array[prop] !== value) { return -2 } } } return -1 } console.log(getKey([19, 20, 22, 21], exampleObject, 20)) console.log(getKey([19, 20, 22, 21], exampleObject, 25)) console.log(getKey([19, 20, 22, 21], exampleObject, 22)) console.log(getKey([19, 20, 22, 21], exampleObject, 19))

about 4 years ago · Juan Pablo Isaza Relatório

0

Si su objeto siempre usa 0 - n como claves, esto se puede simplificar un poco.

Entonces, supongamos que el objeto siempre tiene claves numéricas, comenzando en 0 y aumentando en 1 .

En ese caso, podemos definir una matriz auxiliar, que contiene todos los valores del objeto de la siguiente manera:

 const exampleObjectValues = Object.values(exampleObject);

Ahora, podemos crear una función simple usando la siguiente lógica;

  1. Si exampleObjectValues no contiene value , devuelve -1
  2. De lo contrario,
    1. Obtener el índice de la matriz de entrada
    2. Obtenga el índice de exampleObjectValues
    3. Compáralos y:
      1. Si coinciden, devuelva el objectValueIndex (paso 2.1)
      2. Si no coinciden, devuelve -2

 const exampleObject = { 0: 19, 1: 20, 2: 21, 3: 22 }; const exampleObjectValues = Object.values(exampleObject); function getKey(array, value) { if (!exampleObjectValues.includes(value)) { return -1; } else { const arrayIndex = array.indexOf(value); const objectValueIndex = exampleObjectValues.indexOf(value); return (arrayIndex !== objectValueIndex) ? -2 : objectValueIndex; } } console.log(getKey([19,20,22,21] ,20)); // 1 console.log(getKey([19,20,22,21], 25)); // -1 console.log(getKey([19,20,22,21], 22)); // -2 console.log(getKey([19,20,22,21], 19)); // 0

Lo anterior generará:

 1 -1 -2 0
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