Foros del Web » Programando para Internet » Javascript »

Clonar y eliminar variables de array

Estas en el tema de Clonar y eliminar variables de array en el foro de Javascript en Foros del Web. Hola Con el siguiente script obtengo una imagen aleatoria de entre las que indico en el ImageArray: Código: <script type="text/javascript"> <!-- var imlocation = ""; ...
  #1 (permalink)  
Antiguo 18/02/2016, 10:52
 
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 127
Antigüedad: 12 años, 8 meses
Puntos: 2
Clonar y eliminar variables de array

Hola

Con el siguiente script obtengo una imagen aleatoria de entre las que indico en el ImageArray:

Código:
<script type="text/javascript">
<!--
 var imlocation = "";
 var currentdate = 0;
 var image_number = 0;
 function ImageArray (n) {
   this.length = n;
   for (var i =1; i <= n; i++) {
     this[i] = ' '
   }
 }
 image = new ImageArray(3)
 image[0] = 'image1.gif'
 image[1] = 'image2.gif'
 image[2] = 'image3.gif'
 var rand = 60/image.length
 function randomimage() {
 	currentdate = new Date()
 	image_number = currentdate.getSeconds()
 	image_number = Math.floor(image_number/rand)
 	return(image[image_number])
 }
 document.write("<img src='" + imlocation + randomimage()+ "'>");
//-->
</script>
Lo que me gustaría es aumentar o disminuir la probabilidad de que salga cada imagen. Una forma es añadir más líneas de imagen iguales, de manera que si está 10 veces la imagen 2 y una vez la imagen 1 en el ImageArray, hay más posibilidades de que el random vaya a la imagen 2. El inconveniente es que tengo que copiar y pegar cantidad de veces y me pregunto si hay alguna manera más rápida de conseguirlo, por ejemplo añadiendo alguna variable extra en cada línea o alguna forma diferente.


Una segunda cuestión relacionada es, si hay forma de que cuando cierta imagen haya salido en el random se elimine del código, es decir, ya no esté entre las opciones.

Gracias
  #2 (permalink)  
Antiguo 18/02/2016, 13:46
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Clonar y eliminar variables de array

Para la primera parte de tu consulta, usa el método slice https://developer.mozilla.org/es/doc...es/Array/slice
Para la segunda parte http://www.forosdelweb.com/f13/array...0/#post4767615
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 18/02/2016, 13:56
Avatar de carlillos  
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 245
Antigüedad: 17 años, 2 meses
Puntos: 21
Respuesta: Clonar y eliminar variables de array

Para que no agregues imágenes al array de forma manual podrías hacer un loop que lo haga por ti.
Código Javascript:
Ver original
  1. var unicas, cantidad, repetidas, i, n;
  2.  
  3. unicas = ["imagen1", "imagen2", "imagen3", "imagen4", "imagen5"]; //Imágenes únicas
  4.  
  5. cantidad = [4, 2, 1, 2, 1]; //Cantidad de veces que se repetirá la imagen (4 veces imagen1, 2 veces imagen2, 1 vez imagen3, etc)
  6.  
  7. repetidas = []; //Array con imágenes repetidas
  8.  
  9. //Loop para cada imagen
  10. for (i = 0; i < unicas.length; i += 1) {
  11.    
  12.     //Loop de cantidad de veces que agregamos imagen a array de repetidas
  13.     for (n = 0; n < cantidad[i]; n += 1) {
  14.        
  15.         //Agregando a array de repetidas
  16.         repetidas.push(unicas[i]);
  17.        
  18.     }    
  19.    
  20. }
  21.  
  22. //Escogiendo un elemento aleatorio de array con imágenes repetidas
  23. console.log(repetidas[Math.floor(Math.random() * repetidas.length)]);
En el array "cantidad" pones cuántas veces quieres que se repita cada imagen para aumentar la probabilidad de que se escogida al final en el array "repetidas".
La imagen en "unicas[0]" se repite la cantidad que esté en "cantidad[0]", "unicas[1]" se repite la cantidad que esté en "cantidad[1]", etc.
Saludos.

Última edición por carlillos; 18/02/2016 a las 14:03
  #4 (permalink)  
Antiguo 18/02/2016, 16:07
 
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 127
Antigüedad: 12 años, 8 meses
Puntos: 2
Respuesta: Clonar y eliminar variables de array

Gracias

Ahora tengo el enlace de la imagen en el porcentaje que desee, pero obtengo el enlace, cuando lo ideal es que el usuario vea la imagen que ha resultado en lugar del enlace.

Creo que solo habría que adaptar la última línea, he probado similares a esta sin éxito:

Código:
var url = (repetidas[Math.floor(Math.random() * repetidas.length)]);
document.write("<img src='"+url+"'>");
  #5 (permalink)  
Antiguo 18/02/2016, 16:36
Avatar de carlillos  
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 245
Antigüedad: 17 años, 2 meses
Puntos: 21
Respuesta: Clonar y eliminar variables de array

Código Javascript:
Ver original
  1. var img = document.createElement("img");
  2. img.setAttribute("src", url);
  3. document.body.appendChild(img);

Etiquetas: clonar, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:56.