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
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 yourmap()
callback.Here’s the corrected code:
In your original code, you were missing the
return
statement beforeperson.name + ...
, so the map callback didn’t return anything, resulting inundefined
.With this corrected code, when you run
makeStrings
with the provided array, you should get the desired output:you should try