tscarq Posted August 14, 2021 at 09:24 PM Report Share #623160 Posted August 14, 2021 at 09:24 PM Boa noite, Sou iniciante na programação e não estou a conseguir parar o loop deste código: freelancersarray = []; var xMen = ['Professor X', 'Cyclops', 'Beast', 'Iron-Man', 'Hobgoblin']; var freelancers = ['Legion', 'Magneto']; xMen.pop(); xMen.pop(); for(i=0, j=0; i<freelancers.length; i++, j++) { freelancers.push(...xMen); console.log(freelancers[i]); } A ideia é retirar da variável xMen os 2 últimos itens e depois fazer um for loop em que junte o array xMen ao array freelancers. O código resulta só que está a fazer um loop infinito em vez de parar quando imprime os dois arrays. Se alguém eme conseguir ajudar a perceber porquê agradeço. Link to comment Share on other sites More sharing options...
iron Posted August 14, 2021 at 10:20 PM Report Share #623161 Posted August 14, 2021 at 10:20 PM Isto é javascript. Deveria estar aqui: https://www.portugal-a-programar.pt/forums/forum/83-javascript/ A razão de não conseguires parar o for é porque estás constantemente a aumentar o tamanho do array com o qual estás a fazer a condição. freelancers.length é 2 antes de iniciar o ciclo. Ao fazeres o push do xMen em freelancers, o valor de freelancers.length vai passar para 7. e por cada iteração que fazes no ciclo, aumentas este array em mais 5 elementos. Para retirares elementos de um array, podes utilizar o método pop() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop?retiredLocale=pt-PT A variável j não é necessária nesse for. Cumprimentos, iron Link to comment Share on other sites More sharing options...
tscarq Posted August 15, 2021 at 12:28 AM Author Report Share #623163 Posted August 15, 2021 at 12:28 AM 1 hora atrás, iron disse: Isto é javascript. Deveria estar aqui: https://www.portugal-a-programar.pt/forums/forum/83-javascript/ A razão de não conseguires parar o for é porque estás constantemente a aumentar o tamanho do array com o qual estás a fazer a condição. freelancers.length é 2 antes de iniciar o ciclo. Ao fazeres o push do xMen em freelancers, o valor de freelancers.length vai passar para 7. e por cada iteração que fazes no ciclo, aumentas este array em mais 5 elementos. Para retirares elementos de um array, podes utilizar o método pop() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop?retiredLocale=pt-PT A variável j não é necessária nesse for. A questão é como é que eu limito o ciclo a 1x o freelancers + 1x o xMen?? eu estava a assumir que como no statement eu meti i<freelancers.length e que como eu estava a incluir o array x.MEN estava incluído no array freelancers, que o length estaria concidionado aos 5 elementos. fiz alterações ao código com base no teu comentário. Agora o código funciona(imprime os elementos correctos na quantidade certa). No entanto, aparece-me uma mensagem de erro a dizer: >>>>Code is incorrect You should use the first expression of the for loop to declare a variable. var xMen = ['Professor X', 'Cyclops', 'Beast', 'Iron-Man', 'Hobgoblin']; var freelancers = ['Legion', 'Magneto']; xMen.pop(); xMen.pop(); for(i=0; i<freelancers.length; i++) { freelancers.push(...xMen); freelancers.length = 5; console.log(freelancers[i]); }// prints Legion Magneto Professor X Cyclops Beast Não estou a perceber que variável possa meter Link to comment Share on other sites More sharing options...
iron Posted August 15, 2021 at 10:01 PM Report Share #623170 Posted August 15, 2021 at 10:01 PM Pelo que vi já resolveste o problema aqui.https://www.portugal-a-programar.pt/forums/topic/79097-merge-arrays-with-for-loop/?do=findComment&comment=623169 Cumprimentos, iron Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now