Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

148
Visualizações
El método de empalme hace que el ciclo for se ejecute n - 2 veces (n es el número de elementos en una matriz)

Quiero eliminar los elementos de una matriz con n elementos usando un bucle for y el método de empalme uno por uno. El ciclo se ejecuta n - 2 veces y habrá 2 elementos dentro de la matriz al final. ¿Por qué es así?

 const fruits = ['Apple', 'Orange', 'Watermelon', 'Peach'] for(index in fruits){ console.log('Execution Number:', index); console.log('Before:', fruits); fruits.splice(0, 1); console.log('After:', fruits); console.log('-'.repeat(50)); } console.log('\nFinal Result:', fruits)

resultado:

 Execution Number: 0 Before: [ 'Apple', 'Orange', 'Watermelon', 'Peach' ] After: [ 'Orange', 'Watermelon', 'Peach' ] -------------------------------------------------- Execution Number: 1 Before: [ 'Orange', 'Watermelon', 'Peach' ] After: [ 'Watermelon', 'Peach' ] -------------------------------------------------- Final Result: [ 'Watermelon', 'Peach' ]

Sé que puedo hacer esto con una sola línea de código usando el método de empalme, pero quería probar si puedo hacerlo usando un bucle for.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Esto sucede porque está reduciendo la longitud de la matriz en cada bucle. Al hacer esto, el número de elementos en la matriz disminuye pero el índice aún aumenta.

frutas Índice
['Manzana', 'Naranja', 'Sandía', 'Melocotón'] 0 0 < 4 por lo tanto, Apple se elimina
['Naranja', 'Sandía', 'Melocotón'] 1 1 < 3 por lo que se elimina naranja
['Sandía', 'Melocotón'] 2 2 < 2 Aquí 2 < 2 es falso, el ciclo se detiene

Una solución sería hacer un ciclo for con una longitud fija calculada antes del ciclo

 const fruits = ['Apple', 'Orange', 'Watermelon', 'Peach'] const length = fruits.length for (let index = 0; index < length; index++){ console.log('Execution Number:', index); console.log('Before:', fruits); fruits.splice(0, 1); console.log('After:', fruits); console.log('-'.repeat(50)); } console.log('\nFinal Result:', fruits)

Como mencionó @reyno, en los fragmentos anteriores no puede acceder a las frutas individualmente. De hecho, si desea acceder a cada fruta en el bucle de piso, puede hacerlo accediendo al primer elemento de la matriz cada vez: fruits[0]

about 4 years ago · Juan Pablo Isaza Relatório

0

El problema se está viendo porque la longitud de la matriz se reduce en uno en cada iteración debido a fruits.splice(0,1) .

  1. Iteración 1 - índice = 0; fruits.length = 4
  2. Iteración 2 - índice = 1; fruits.length = 3
  3. Iteración 3 - índice = 2; fruits.length = 2 -> for loop breaks

De ahí la observación.

about 4 years ago · Juan Pablo Isaza Relatório

0

Cuando haces fruits.splice , estás modificando la matriz utilizada para el bucle for en sí. Si observa el index , se incrementa en cada ciclo. Después Execution Number: 1 , se incrementa a 2 y mira las fruits y ve que no hay más elementos. Al ver eso, sale del bucle for.

Si quieres hacerlo con un bucle for, lo que probablemente querías era

 const fruits = ['Apple', 'Orange', 'Watermelon', 'Peach'] const fruitsLen = fruits.length; for(let i = 0; i < fruitsLen; i++){ console.log('Execution Number:', i); console.log('Before:', fruits); fruits.splice(0, 1); console.log('After:', fruits); console.log('-'.repeat(50)); } console.log('\nFinal Result:', fruits)
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda