使用数组数据创建新字符串

Making new strings with array data

提问人:Caelan Quigley 提问时间:10/5/2023 更新时间:10/5/2023 访问量:46

问:

我正在尝试解决这个问题,如果年龄> 18 岁,它返回名称 + 可以转到矩阵,或者如果年龄< 18 岁返回,则他们未成年:

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,undefined,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 数组 方法 原型

评论

0赞 Jardulino 10/5/2023
嗨,尝试添加这样的 return 语句:return person.name + " can go to The Matrix"; return person.name + "is underage!!";
0赞 Jardulino 10/5/2023
您甚至可以使功能更简单makeStringsfunction makeStrings(arr) { return arr.map((person) => { if (person.age > 18) { return person.name + " can go to The Matrix"; } return person.name + "is underage!!"; }); }

答:

0赞 Ale_Bianco 10/5/2023 #1

可用于转换对象数组。但是,您的回调函数中有一个小错误。您不会在回调中返回字符串。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;
}

在原始代码中,您之前缺少该语句,因此 map 回调没有返回任何内容,从而导致 .returnperson.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赞 nesly 10/5/2023 #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
    }
])); 

你应该试试

评论

0赞 Community 10/8/2023
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。