Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript for loop syntax

Tags:

javascript

As javascript developers we all have to write a lot of for loops. Before a couple of months I saw an alternative syntax, which I really liked. However, I'm now interested, is there any other nice way.

Let's say that I have an array of data representing users in a system. What I did before is:

var users = [
    { name: "A"},
    { name: "B"},
    { name: "C"},
    { name: "D"},
    { name: "E"}
];

var numOfUsers = users.length;
for(var i=0; i<numOfUsers; i++) {
    var user = users[i];
    // ...
}

There is one additional row var user = users[i];. Normally I feel more comfortable if I have user instead of users[i]. So, the new way:

for(var i=0; user=users[i]; i++) {
    // ...
}

I'm also wondering if the second approach produces problems in some of the browsers. One of my colleagues reported that this syntax is a little bit buggy under IE.

Edit: Thankfully, the answers below pointed me out to the right direction. If some of the elements of the array is falsy then the loop will stop. There is some kind of solution:

for(var i=0; typeof (user=users[i]) !== "undefined"; i++) {
   // ...
}

But that's too much for me. So, I guess that I'll use this syntax only when I'm 100% sure that all the elements are truly (which means never :)).

like image 967
Krasimir Avatar asked Mar 21 '23 18:03

Krasimir


1 Answers

In your “new” approach, you don’t need numOfUsers any more.

As for the potential problems: This approach relies on all users[i] having values evaluating to true for the loop to continue (and user becoming undefined, equal to false and therefor ending the loop after the last user is processed) – but sometimes you might have data where not every record evaluates to true, but “false-y” values might also occur in the data – and in that case, this approach of course fails.

like image 140
CBroe Avatar answered Mar 31 '23 21:03

CBroe