Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

117
Vistas
Why won't the last array value be returned?

I have an array with several values and I want to get value stored in the multiple of 3. So, in this case the new array should be 13 and 28. However, I'm only getting 13.

Code:

    // array1 --> [ '5', '10', '13', '15', '20', '28' ]
    var trueLength = array1.length;
    var iCount = 1;
    for(var i = 0; i < trueLength;) {
        if(iCount % 3 != 0) {
            array1.shift();
        } else if (iCount % 3 == 0) {
            array2.push(array1[i]);
            array1.shift();
        }
        iCount += 1;
        if(iCount == trueLength) break;
    }

Output:

[ '13' ]

I don't see anything logically wrong for it to only output 13 which makes no sense.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

array1.shift(); will remove the first element of the array. If you do this while iterating over iCount, you'll be skipping over some elements of the array, since you're both removing items and incrementing the index being iterated over.

Just filter the array by the modulo of the index being iterated over.

const arr = [ '5', '10', '13', '15', '20', '28' ];
const result = arr.filter((_, i) => i % 3 === 2);
console.log(result);

about 4 years ago · Juan Pablo Isaza Denunciar

0

you got little logical problem at break condition this would do


var array1 = ['5', '10', '13', '15', '20', '28'];
var array2 =[];

var trueLength = array1.length;
var iCount = 1;
    for(var i = 0; i < trueLength;) {
        if(iCount % 3 != 0) {
           
            array1.shift();
        } else if (iCount % 3 == 0) {
              console.log(iCount);
            array2.push(array1[i]);
            array1.shift();
        }
        iCount += 1;
        if(iCount == trueLength+1) break;
    }
    
    console.log(array2[1]);
    

about 4 years ago · Juan Pablo Isaza Denunciar

0

If you like ti use the pattern of shift and neccessary pushign the value, you could use two variables to keep track of the length of the rest items and another for calculate the remainder..

const
    array = ['5', '10', '13', '15', '20', '28'];
    
let i = 1,
    l = array.length;

while (l) {
    const value = array.shift();
    if (i % 3 === 0) array.push(value);
    l--;
    i++;
}

console.log(array);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda