skip to Main Content

I am trying to solve this problem where if age > 18 it returns name + can go to the matrix or if age < 18 returns they are under age:

function makeStrings(arr){
  // your code here
}

console.log(makeStrings([
    {
        name: "Angelina Jolie",
        age: 80
    },
    {
        name: "Eric Jones",
        age: 2
    },
    {
        name: "Paris Hilton",
        age: 5
    },
    {
        name: "Kayne West",
        age: 16
    },
    {
        name: "Bob Ziroll",
        age: 100
    }
])); 
// ["Angelina Jolie can go to The Matrix", 
// "Eric Jones is under age!!", 
// "Paris Hilton is under age!!", 
// "Kayne West is under age!!", 
// "Bob Ziroll can go to The Matrix"]

The exercise is from a list of array.prototype.map() exercises so although I think there are other ways to get the correct answer I’ve tried to use the map() method. So far all I’ve managed to get back is a syntax error or [undefined,undefined,undefined,undefined,undefined] which is what the code below returns.

function makeStrings(arr){
  // your code here
  const map1 = arr.map((person) => {
    if(person.age > 18){
      person.name + " can go to The Matrix";
    }
    else {
      person.name + "is underage!!";
    }
  });
  return map1;
}

console.log(makeStrings([
    {
        name: "Angelina Jolie",
        age: 80
    },
    {
        name: "Eric Jones",
        age: 2
    },
    {
        name: "Paris Hilton",
        age: 5
    },
    {
        name: "Kayne West",
        age: 16
    },
    {
        name: "Bob Ziroll",
        age: 100
    }
])); 
// ["Angelina Jolie can go to The Matrix", 
// "Eric Jones is under age!!", 
// "Paris Hilton is under age!!", 
// "Kayne West is under age!!", 
// "Bob Ziroll can go to The Matrix"]

2

Answers


  1. You can use map() to transform the array of objects. However, there’s a small mistake in your callback function. You’re not returning the string in your map() callback.

    Here’s the corrected code:

    function makeStrings(arr){
      const map1 = arr.map((person) => {
        if(person.age > 18){
          return person.name + " can go to The Matrix";
        }
        else {
          return person.name + " is under age!!";
        }
      });
      return map1;
    }
    

    In your original code, you were missing the return statement before person.name + ..., so the map callback didn’t return anything, resulting in undefined.

    With this corrected code, when you run makeStrings with the provided array, you should get the desired output:

    [
      "Angelina Jolie can go to The Matrix",
      "Eric Jones is under age!!",
      "Paris Hilton is under age!!",
      "Kayne West is under age!!",
      "Bob Ziroll can go to The Matrix"
    ]
    
    Login or Signup to reply.
  2. function makeStrings(arr) {
      const result = [];
    
      for (const person of arr) {
        if (person.age >= 18) {
          result.push(`${person.name} can go to The Matrix`);
        } else {
          result.push(`${person.name} is under age!!`);
        }
      }
    
      return result;
    }
    
    console.log(makeStrings([
        {
            name: "Angelina Jolie",
            age: 80
        },
        {
            name: "Eric Jones",
            age: 2
        },
        {
            name: "Paris Hilton",
            age: 5
        },
        {
            name: "Kayne West",
            age: 16
        },
        {
            name: "Bob Ziroll",
            age: 100
        }
    ])); 
    

    you should try

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search