es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo utilizar variables y/o bucles para obtener más fácilmente y con menos código la clave de un objeto y establecer una URL basada en esto?

Tengo un useEffect en un gancho personalizado de react donde quiero establecer el enlace URL de un botón que dependerá de la etiqueta que obtenga del usuario en un objeto. El objeto de usuario es una matriz con varios objetos, todos con la clave “Nombre”, pero solo quiero obtener el valor de las claves (Nombre) que sean iguales a ‘pequeño’, ‘mediano’ o ‘alto’ (si existen en el objeto de usuario).

Actualmente estoy haciendo esto, lo cual funciona, pero creo que debe haber una manera más fácil de comparar o recorrer matrices u objetos y quizás establecer la URL y el valor de “Nombre” en variables, para que no tenga que usar tantas líneas si fuera a convertirse en un proyecto más grande, pero no puedo encontrar una buena manera con menos código que funcione.

Entonces, para ser más claro, lo que quiero hacer es:
Si el objeto de usuario contiene un valor, por ejemplo, que se llama ‘medio’, quiero establecer la URL en ${mediumUrl}?a=${user.UserID}.

Uso hasTag para ver si existen valores (pequeño, mediano, alto), para poder establecerlo en verdadero o falso, lo que decide si mostrar la página o el botón con la URL en absoluto, ya que no quiero que se muestre la página o el botón si el usuario no tiene ninguno de los valores correctos.

Espero que esto no sea demasiado confuso y avíseme si lo es y puedo tratar de aclararlo. Soy bastante nuevo en JavaScript. ¡Gracias!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Una forma mejor de hacer esto sería usar un bucle for para recorrer la matriz userTags y comprobar si alguna de las etiquetas tiene un valor de Name de small, medium o high. Si se encuentra uno de estos valores, establezca la wheelUrl en la URL correspondiente y establezca showPage en true. Si ninguno de estos valores se encuentra, establezca showPage en false.

    let wheelUrl;
    let showPage = false;
    
    for (let i = 0; i < userTags.length; i++) {
      if (userTags[i].Name === 'small') {
        wheelUrl = `${smallUrl}?a=${user.UserID}`;
        showPage = true;
        break;
      } else if (userTags[i].Name === 'medium') {
        wheelUrl = `${mediumUrl}?a=${user.UserID}`;
        showPage = true;
        break;
      } else if (userTags[i].Name === 'high') {
        wheelUrl = `${highUrl}?a=${user.UserID}`;
        showPage = true;
        break;
      }
    }
    
    setWheelUrl(wheelUrl);
    setShowPage(showPage);
    

Comments are closed.