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

111
Vistas
Si la condición en un bucle for garantiza que se encuentre una cadena en una matriz

Usando una matriz de 3 palabras que se genera aleatoriamente a partir de otra función, estoy tratando de obtener una función para verificar si cierta palabra i en un bucle, que se proporciona desde el src de un archivo de imagen, se encuentra en la matriz generada de esa otra función, y en caso de que no lo sea, esa otra función se ejecutará nuevamente hasta que la palabra se incluya en la matriz.

 var gFlavors = ['vanilla', 'chocolate', 'strawberry', 'lemon', 'peanutbutter'] function getFlavor(flavor) { var options = []; for (var i = 1; i <= gFlavors.length; i++) { // I have a folder of images, with the images named "1-vanilla.gif", "2-chocolate.gif" and so on. Using the loop, I am getting those images and setting a class and data for each flavor = new Image(150, 150); flavor.src = 'img/' + i + '-' + gFlavors[i - 1] + '.gif'; flavor.setAttribute('class', 'flavor'); flavor.setAttribute('data-flavor', gFlavors[i - 1]); var elFlavorsDiv.appendChild(flavor); // Slicing solely the flavor word found in each image filename var flavorImgSrc = flavor.attributes.src.nodeValue; var flavorImgSrcDash = flavorImgSrc.indexOf('-'); var flavorStr = flavorImgSrc.slice(flavorImgSrcDash + 1, flavorImgSrc.length - 4); options = generateOptions(); // The problematic line which doesn't do what I want it to: To check whether an i flavor is included in the generated random array (and if it isn't - re-generate the random array until the flavor is included) - For example: The generated random array is ['strawberry', 'peanutbutter', 'chocolate'] - if i is currently one of the 3 flavors found in the array, keep the array as it is, on the other hand if i is for example 'lemon' - re-run generateOptions() until the current i is found there - so I only get an array matching the current i if (!options[i].includes(flavorStr)) options = generateOptions(); } // A function returning an array of 3 random flavors function generateOptions() { var randomizedOptions = gFlavors; for (var i = 0; i < 3; i++) { shuffle(randomizedOptions); randomizedOptions.splice(0, randomizedOptions.length-3) } return randomizedOptions; } // A shuffle function for arrays function shuffle(array) { array.sort(() => (Math.random() - 0.5)); }

Ejemplo de resultado esperado: la matriz aleatoria generada es ['fresa', 'mantequilla de maní', 'chocolate'] - Si i es actualmente uno de los 3 sabores que se encuentran en la matriz, mantenga la matriz como está, por otro lado si i es, por ejemplo, 'limón': vuelva a ejecutar generateOptions() hasta que se encuentre allí la i actual, por lo que solo obtengo una matriz que coincide con la i actual.

A partir de ahora, estoy recibiendo un TypeError: No puedo leer las propiedades de undefined (leyendo 'incluye') en getFlavor

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

0

Su función de generateOptions opciones devuelve vacío.

Entonces, por lo tanto options no están definidas, lo que significa que options[i] arrojarían.

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