Cita: el Profesor nos dijo de no usar un for ya que el for sigue trabajando aunque haya encontrado que la empresa o lo que sea esté repetido
personalmente para mi no tiene relevancia el bucle que sea, puede ser while, for, o incluso un do/whie aunque con este ultimo hay que tener cuidado. los bucles se pueden controlar con break y continue, o incluso un return en el caso de estar dentro de una funcion. a continuacion una version reducida de mas o menos lo que tienes. lo unico que en lugar de agregar a un array, se muestra un alerta con una informacion de guia para que puedas analizar los valores actuales.
Código:
company = ['X', 'Y'];
var i = 0;
while(i < company.length){
if(company[i] != 'Y'){alert("no existe, pues se agrega\nIteracion acutal: " + i + "\nSe comparo con la empresa: " + company[i]); break;}
i++;
}
en este ejemplo se usa valores literales pero es solo como muestra para indicarte el error. fijate que el bucle no continua a pesar que "Y" en realidad ya esta en el array. dado que la primera condicion es cierta, se le instruye al bucle que debe detener la iteracion. mas interesante aun, cambia el string literal (color rojo en el codigo) por "X" y veras que cuando se compara con "Y" el codigo procede agregar la empresa "X" aunque realmente ya existe.
¿como yo lo haria? usando mas o menos el mismo ejemplo,
Código:
company = ['X', 'Y'];
var i = 0, isRegistered = false;
while(i < company.length){
if(company[i] == 'Z'){isRegistered = true; break;}
i++;
}
if(!isRegistered)alert("Se agrega en el array")
de nuevo aqui, cambia el string literal por uno de los valores del array. el alerta no se mostrara. el mismo ejemplo anterior pero con bucle for.
Código:
company = ['X', 'Y'];
for(var i = 0, isRegistered = false; i < company.length; i++){
if(company[i] == 'Z'){isRegistered = true; break;}
}
if(!isRegistered)alert("Se agrega en el array")
en ambos ejemplos notese que el alerta se muestra solo si no existe la empresa en el array.