用数组数据创建新字符串

问题描述 投票:0回答:2

我正在尝试解决这个问题,如果年龄> 18,它返回姓名+可以进入矩阵,或者如果年龄< 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"]

该练习来自 array.prototype.map() 练习列表,因此尽管我认为还有其他方法可以获得正确答案,但我尝试使用 map() 方法。到目前为止,我设法返回的只是一个语法错误或 [undefined,undefine,undefined,undefined,undefined],这就是下面的代码返回的内容。

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"]
javascript arrays methods prototype
2个回答
0
投票

您可以使用

map()
来变换对象数组。但是,您的回调函数中有一个小错误。您没有在
map()
回调中返回字符串。

这是更正后的代码:

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

在您的原始代码中,您在

return
之前缺少
person.name + ...
语句,因此地图回调没有返回任何内容,导致
undefined

使用此更正后的代码,当您使用提供的数组运行

makeStrings
时,您应该获得所需的输出:

[
  "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"
]

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

你应该尝试一下

© www.soinside.com 2019 - 2024. All rights reserved.