Need to reset just the indexes of a Javascript array

19,385

Solution 1

This is easily done natively using Array.filter:

resetArr = orgArr.filter(function(){return true;});

Solution 2

You could just copy all the elements from the array into a new array whose indices start at zero.

E.g.

function startFromZero(arr) {
    var newArr = [];
    var count = 0;

    for (var i in arr) {
        newArr[count++] = arr[i];
    }

    return newArr;
}

// messed up array
x = [];
x[3] = 'a';
x[4] = 'b';
x[5] = 'c';

// everything is reordered starting at zero
x = startFromZero(x);

Solution 3

Easy,

var filterd_array = my_array.filter(Boolean);

Solution 4

Perhaps "underscore.js" will be useful here.

The _.compact() function returns a copy of the array with no undefined.

See: http://underscorejs.org/#compact

Share:
19,385

Related videos on Youtube

Adnan Baliwala
Author by

Adnan Baliwala

Updated on September 16, 2022

Comments

  • Adnan Baliwala
    Adnan Baliwala over 1 year

    I have a for loop which returns an array.

    Return:

    1st loop:
    arr[0]
    arr[1]
    arr[2]
    arr[3]
    

    Here the length I get is 4 (Not a problem).

    Return:

    2nd loop
    arr[4]
    arr[5]
    arr[6]
    arr[7] 
    arr[8] 
    

    Here the length I get is 9.

    What I want here is the actual count of the indexes i.e I need it to be 5. How can I do this. And is there a way that when I enter each loop every time it starts from 0 so that I get proper length in all the loops?

  • Adnan Baliwala
    Adnan Baliwala almost 12 years
    i love you crazedgremlin..you made my day
  • danmcardle
    danmcardle almost 12 years
    You're welcome! Just so you know, this is a bad solution to your problem -- you should probably choose a new data structure such as a linked list that will allow you to delete items without having to recreate the array each time. Also, you should choose an answer if you have found a solution to your problem!
  • Emmanuel
    Emmanuel about 10 years
    Worked perfect for me!
  • lepe
    lepe about 10 years
    +1 clean solution. It works even using the same array: origArr = origArr.filter(...)
  • M_R_K
    M_R_K almost 5 years
    Bit shorter version : resetArr = orgArr.filter(Boolean);
  • Victor R. Oliveira
    Victor R. Oliveira almost 4 years
    awesome lib ; applies to arrays and also avoid removal of non empty objects.