0

I am trying to get the values from an array and assign to an array of objects as a new property.
The array of objects:

const employees = [
  {
    firstName: "Ana",
    lastName: "Rosy"
  },
  {
    firstName: "Zion",
    lastName: "Albert"
  },
  {
    firstName: "John",
    lastName: "Doe"
  }
];

An array

const ages = [30, 60, 45]

Desired result

const employees = [
  {
    firstName: "Ana",
    lastName: "Rosy",
    age:30
  },
  {
    firstName: "Zion",
    lastName: "Albert",
    age:60
  },
  {
    firstName: "John",
    lastName: "Doe",
    age:45
  }
];

I tried something like this

const employeesWithAge = (ages) => {
  return employees.map((row) => {
    return {
      ...row,
      age: ages
    };
  });
};
const result = employeesWithAge(ages);
console.log("result", result);

But it adds the entire array of ages to the employees array of objects. Any help will be appreciated

2 Answers 2

1

You can use Array.prototype.map() for this. Use the spread syntax (...) on the current element to copy the properties into a new object, then add the age property based on the ages array, using .map() callback's second parameter (the current index).

employees.map((employee, i) => ({...employee, age: ages[i]}));

Live example:

const employees = [{
    firstName: "Ana",
    lastName: "Rosy"
  },
  {
    firstName: "Zion",
    lastName: "Albert"
  },
  {
    firstName: "John",
    lastName: "Doe"
  }
];

const ages = [30, 60, 45];

const result = employees.map((employee, i) => ({ ...employee, age: ages[i] }));

console.log(result);

Sign up to request clarification or add additional context in comments.

Comments

1

I think a simple for loop should solve your problem.

for (let i = 0; i < employees.length; i++) {
  employees[i]["age"] = ages[i];
}

This loop iterates through the length of your list of employee objects and adds a new "age" attribute to each object with the corresponding age in your ages array.

All together I imagine your code looking something like this.

const employees = [
  {
    firstName: "Ana",
    lastName: "Rosy"
  },
  {
    firstName: "Zion",
    lastName: "Albert"
  },
  {
    firstName: "John",
    lastName: "Doe"
  }
];

const ages = [30, 60, 45];

for (let i = 0; i < employees.length; i++) {
  employees[i]["age"] = ages[i];
}

console.log(employees);

Comments

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.