简体   繁体   中英

How to fill an array with a for loop?

I'm having a lot of trouble learning how to use for loops to fill a new variable. As an example say if I have var year = [2010, 2000, 1992]; and var age = []; .

How would I use a for loop to fill in the age variable?

If this is a bad example, don't use this. I just would like some help with understanding how to fill in empty arrays.

 var names = ["Ace", "yoshi", "Lassie"]; var age = [25, 23, 5]; var u24 = []; for (var i = 0; i < names.length; i++) { if ([age] < 24) { u24 += age[i] console.log("hello " + names + " " + "you are" + age); } } 

It is better to create objects that contain relevant data. Combining the name and age into a person object would help.

 var persons = [ { name: "Ace", age: 25 }, { name: "yoshi", age: 23 }, { name: "Lassie", age: 5 } ]; var u24=[]; for (var i =0; i < persons.length; i++) { var person = persons[i]; if(person.age < 24){ u24.push(person.age); console.log("hello " + person.name + " " + "you are " + person.age); } } console.log(u24); 

But you can also use forEach like this:

 var persons = [ { name: "Ace", age: 25 }, { name: "yoshi", age: 23 }, { name: "Lassie", age: 5 } ]; var u24=[]; persons.forEach( function(person) { if(person.age < 24){ u24.push(person.age); console.log("hello " + person.name + " " + "you are " + person.age); } } ); console.log(u24); 

By making objects that include all relevant data your loops will never get out of sync. If you remove a person from the persons array then their name and age will go together.

UPDATE: Using a filter

 var persons = [ { name: "Ace", age: 25 }, { name: "yoshi", age: 23 }, { name: "Lassie", age: 5 } ]; var youngPersons = persons.filter( function(person) { return (person.age < 24); } ); console.log(youngPersons); 

Or using an ES6 Arrow Function

  var persons = [ { name: "Ace", age: 25 }, { name: "yoshi", age: 23 }, { name: "Lassie", age: 5 } ]; var youngPersons = persons.filter((person) => person.age < 24); console.log(youngPersons); 

This provides back an array of the persons that match your Age under 24 criteria.

If all you want to do is fill in the age array with a loop, you can try this:

 let years = [2010, 2000, 1992], age = [], d = new Date().getFullYear(); years.forEach(year => age.push(d - year)); console.log(age); 

As regards the relationship between age and names, I think Intervalia has explained that.

A working version. Please compare it with your code to see the differences. Arrays always got me when I was starting out, and the syntax with different across languages, despite the reuse of bracket symbols.. AutoIt language still trips me up :P

var names = ["Ace", "yoshi", "Lassie"];
var age = [25, 23, 5];
//Use array.push() to append values
var u24 = [];

//variable i counts up to names.length
//because i++ means 'add one' to i

for (var i = 0; i < names.length; i++) {
    //if ([age] < 24) {u24 += age[i];
    //age at the count 'i' (which is
    //counting)
    //is achieved by array[at_index]
    if (age[i] < 24) {
        u24.push(age[i]); //add it to the end
        console.log("Hello " + names[i] +
          ", you are " + age[i]);
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM