Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
170
rated 0 times [  177] [ 7]  / answers: 1 / hits: 15512  / 10 Years ago, sun, may 4, 2014, 12:00:00

I am just wondering why it is not possible to make forEach on array of undefined.



Code:



var arr = new Array(5); // [undefined x 5]

//ES5 forEach
arr.forEach(function(elem, index, array) {
console.log(index);
});

//underscore each
_.each(arr, function(elem, index, array) {
console.log(index);
});


Both examples do not execute function.



Now to make foreach, I have to make:



var arr = [0,0,0,0,0];


Then make forEach on it.



I am trying to make an array with specified size and loop through it, avoiding for loop. I think that it is clearer using forEach than for loop.
With array with length 5 it is not a problem, but it would be ugly with bigger arrays.



Why there is a problem looping through array of undefined values ?


More From » arrays

 Answers
34

Array(5) is essentialy equivalent to



var arr = []; 
arr.length = 5;


In javascript changing array's length doesn't set any values for it's numeric properties nor does it define those properties in the array object. So numeric properties are undefined instead of having undefined value. You can check it by using:



Object.keys(arr)


When iterating javascript iterates through numeric properties of the array, so if these don't exist, there is nothing to iterate over.



You can check it by doing:



var arr = Array(5)

//prints nothing
arr.forEach(function(elem, index, array) {
console.log(index);
});

arr[3] = 'hey'
//prints only 'hey' even though arr.length === 5
arr.forEach(function(elem, index, array) {
console.log(index);
});


The following code:



var arr = [undefined, undefined];


creates and array of length ===2 and sets the both numeric properties 0 and 1 to undefined.


[#71184] Friday, May 2, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
willieelisham

Total Points: 201
Total Questions: 108
Total Answers: 106

Location: Zambia
Member since Sat, Oct 31, 2020
4 Years ago
;