Ace
Ace

Reputation: 31

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

Upvotes: -1

Views: 11102

Answers (3)

Orelongz
Orelongz

Reputation: 46

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.

Upvotes: 2

user8112809
user8112809

Reputation:

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

Upvotes: 0

Intervalia
Intervalia

Reputation: 10945

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.

Upvotes: 1

Related Questions