AYUDA! Necesito hacer una validación

  • Autor Autor Augussto
  • Fecha de inicio Fecha de inicio
Augussto

Augussto

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola quería pedir una ayuda para hacer una validación en js.
Lo que necesito hacer es que:

El cliente se encuentra con una serie de productos por ejemplo: H1, H5, H6, H3, H2, H4, H9, H10
El cliente puede mantener un producto seleccionado y hacer un drop en una caja, la caja almacenara en un array los productos, en el orden que en el cliente los soltaron.
La validación que necesito hacer es la siguiente:
  • Que los productos sean mayor o igual a tres ( >= 3)
  • Que los productos sigan un orden: Por ejemplo que si selecciono el producto H3 el siguiente que selecciono sea el H4, luego el H5 y así sucesivamente, en caso de no cumplirse esta condición de un error!

A lo que voy es que no logro hacer esa validación ya que los productos seleccionados por el cliente tienen que seguir un orden que esta establecido.
Esta es una parte del array con los nombres del producto y ordenados: XS, BRW, LSO, XXM, XLA, SSO, BBA, SX
El cliente si selecciono LSO los siguientes dos que tiene que seleccionar son XXM, XLA si no es así mostrara un error.

Dejo otro dato: Los productos se traen en un array desde la db y la caja de para soltar los productos da como resultado un array, seria como comparar dos arrays.

Si alguien me puede dar una mano o algún lugar por donde leer o informarme estaría muy agradecido!
Saludos!
 
La verdad que me perdí un poco pero podrías asociar el valor con un número

XS => 1, BRW => 2, LSO => 3, XXM => 4...

Y así al seleccionar uno, pueda identificar cuáles son menores o mayores. O bien, ordenar el array por valores y comprobar el index, que sería más complicado supongo.
 
mmm si estan en un array, solo recorre el array viendo si coinciden los demas... primero necesitas saber desde donde selecciono...en base a tu ejemplo LSO seria el indice 2, por lo que iniciarias la validacion desde el indice 2...
luego vas con un for o foreach siguiendo el array de items seleccionados y viendo si coinciden o no... basiacmente comparas el array principal con el array de los productos seleccionados

PHP:
<script>
var arrayp = ["XS", "BRW", "LSO", "XXM", "XLA", "SSO", "BBA", "SX"]; //array principal
var arrays = ["LSO", "XXM", "XLA"]; //array seleccionado
var arraym = ["LSO", "XS", "XLA"]; //array test error

//primero buscar el id
var inicial = 0;
for(var i=0;i<arrayp.length;i++){
	if(arrayp[i]===arrays[0]){ inicial=i; break; }
}

//segundo comparar a ver si estan bien
var error = false;
for(var i=0;i<arrays.length;i++){
	if(arrayp[inicial]!==arrays[i]){ error=true; break; }
    	inicial++;
}

if(error){
	alert("Error");
}else{
	alert("Bien");
}
</script>

ahi en el script mostrara Bien... pero si cambias por arraym, mostrara Error...
PHP:
for(var i=0;i<arraym.length;i++){
	if(arrayp[inicial]!==arraym[i]){ error=true; break; }
    	inicial++;
}

desde ya se puede mejorar mas...pero es una idea para partir
 
mmm si estan en un array, solo recorre el array viendo si coinciden los demas... primero necesitas saber desde donde selecciono...en base a tu ejemplo LSO seria el indice 2, por lo que iniciarias la validacion desde el indice 2...
luego vas con un for o foreach siguiendo el array de items seleccionados y viendo si coinciden o no... basiacmente comparas el array principal con el array de los productos seleccionados

PHP:
<script>
var arrayp = ["XS", "BRW", "LSO", "XXM", "XLA", "SSO", "BBA", "SX"]; //array principal
var arrays = ["LSO", "XXM", "XLA"]; //array seleccionado
var arraym = ["LSO", "XS", "XLA"]; //array test error

//primero buscar el id
var inicial = 0;
for(var i=0;i<arrayp.length;i++){
	if(arrayp[i]===arrays[0]){ inicial=i; break; }
}

//segundo comparar a ver si estan bien
var error = false;
for(var i=0;i<arrays.length;i++){
	if(arrayp[inicial]!==arrays[i]){ error=true; break; }
    	inicial++;
}

if(error){
	alert("Error");
}else{
	alert("Bien");
}
</script>

ahi en el script mostrara Bien... pero si cambias por arraym, mostrara Error...
PHP:
for(var i=0;i<arraym.length;i++){
	if(arrayp[inicial]!==arraym[i]){ error=true; break; }
    	inicial++;
}

desde ya se puede mejorar mas...pero es una idea para partir

Millones de gracias, esto es lo que necesitaba :love_heart:
 
Atrás
Arriba