9

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?

2
  • 3
    can you post the relevant code? Commented Jul 10, 2012 at 13:02
  • 1
    You need to show us the loop you are using, the condition inside it and the initialisation of your array in the first place. Commented Jul 10, 2012 at 13:05

4 Answers 4

40

This is easily done natively using Array.filter:

resetArr = orgArr.filter(function(){return true;});
Sign up to request clarification or add additional context in comments.

4 Comments

Worked perfect for me!
+1 clean solution. It works even using the same array: origArr = origArr.filter(...)
Note that this will not work for IE <= 8. You may implement this suggested polyfill to solve that problem: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Bit shorter version : resetArr = orgArr.filter(Boolean);
4

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);

2 Comments

i love you crazedgremlin..you made my day
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!
4

Easy,

var filterd_array = my_array.filter(Boolean);

Comments

3

Perhaps "underscore.js" will be useful here.

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

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

1 Comment

awesome lib ; applies to arrays and also avoid removal of non empty objects.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.