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
.
Related videos on Youtube
Author by
Adnan Baliwala
Updated on September 16, 2022Comments
-
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 from0
so that I get proper length in all the loops? -
Adnan Baliwala almost 12 yearsi love you crazedgremlin..you made my day
-
danmcardle almost 12 yearsYou'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 about 10 yearsWorked perfect for me!
-
lepe about 10 years+1 clean solution. It works even using the same array: origArr = origArr.filter(...)
-
M_R_K almost 5 yearsBit shorter version : resetArr = orgArr.filter(Boolean);
-
Victor R. Oliveira almost 4 yearsawesome lib ; applies to arrays and also avoid removal of non empty objects.