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

117
Vistas
Necesita una forma de elegir aleatoriamente un valor de una matriz de objetos sin atravesar el padre

Todavía soy bastante nuevo en JavaScript y necesito ayuda con una tarea que estoy tratando de realizar.

Tengo una serie de objetos como este:

 const data = { "Total_packages": { "package1": { "tags": [ "kj21", "j1", "sj2", "z1" ], "expectedResponse": [ { "firstName": "Name", "lastName": "lastName", "purchase": [ { "title": "title", "category": [ "a", "b", "c" ] } ] } ] }, "package2": { "tags": [ "s2", "dsd3", "mhg", "sz7" ], "expectedResponse": [ { "firstName": "Name1", "lastName": "lastName1", "purchase": [ { "title": "title1", "category": [ "a1", "b1", "c1" ] } ] } ] } } }

Mi objetivo es enviar solicitudes de API con un valor aleatorio de "etiquetas" desde arriba y luego hacer coincidir la respuesta que recibo de la llamada con la parte de respuesta esperada de los datos.

Mi pensamiento inicial fue hacer algo como:

 data.Total_packages.tags[Math.floor(Math.random() * data.Total_packages.tags.length)];

Sin embargo, no puedo llamar a "etiquetas" sin atravesar su padre, es decir, "paquete1" o "paquete2", por lo que ya no será aleatorio.

Sé que probablemente haya una manera muy simple de hacerlo que no estoy entendiendo. Cualquier consejo sería apreciado.

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

0

Puede crear una matriz a partir de varios elementos de etiquetas y usarla para hacer cosas aleatorias.

 const data = { "Total_packages": { "package1": { "tags": [ "kj21", "j1", "sj2", "z1" ], "expectedResponse": [ { "firstName": "Name", "lastName": "lastName", "purchase": [ { "title": "title", "category": [ "a", "b", "c" ] } ] } ] }, "package2": { "tags": [ "s2", "dsd3", "mhg", "sz7" ], "expectedResponse": [ { "firstName": "Name1", "lastName": "lastName1", "purchase": [ { "title": "title1", "category": [ "a1", "b1", "c1" ] } ] } ] } } } const arrayOfTags = Object.entries(data.Total_packages).reduce((acc, [k, v]) => { if (v.tags) acc = acc.concat(v.tags); return acc; }, []); console.log(arrayOfTags); console.log(arrayOfTags[Math.floor(Math.random() * arrayOfTags.length)]);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Deberá extraer las etiquetas, juntarlas en una matriz y aleatorizar el índice, finalmente obtener el valor allí. La solución a continuación asume que sus etiquetas son todas matrices dentro data.Total_packages[whateverpackage]

 const data = { "Total_packages": { "package1": { "tags": [ "kj21", "j1", "sj2", "z1" ], "expectedResponse": [ { "firstName": "Name", "lastName": "lastName", "purchase": [ { "title": "title", "category": [ "a", "b", "c" ] } ] } ] }, "package2": { "tags": [ "s2", "dsd3", "mhg", "sz7" ], "expectedResponse": [ { "firstName": "Name1", "lastName": "lastName1", "purchase": [ { "title": "title1", "category": [ "a1", "b1", "c1" ] } ] } ] } } } let tags = []; for (let key in data.Total_packages) { if (data.Total_packages[key].tags) tags = tags.concat(data.Total_packages[key].tags); } console.log(tags[parseInt(tags.length * Math.random())]);

about 4 years ago · Juan Pablo Isaza Denunciar

0

guardé todas las etiquetas en una matriz separada y mantuve la referencia de la respuesta expectedResponse en el bloque. entonces es cuestión de seleccionar aleatoriamente un índice de etiqueta y hacer coincidir con el índice de respuesta esperada del bloque. probablemente necesite algún ajuste en la longitud aleatoria, pero espero que lo lleve en la dirección correcta.

 var tags = [] var block = Object.values(data.Total_packages).flat() block.forEach(item => tags = [...tags, ...item.tags]) var index = tags[parseInt(tags.length * Math.random())] console.log(block[Math.floor(tags.indexOf(index) / 4)].expectedResponse)
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