关于javascript的一个题目,求大佬帮帮忙

We will fetch JSON data of some users from an HTML document, filter the data, and then display in a JavaScript console (e.g. with Browser's DevTools).

The JSON format looks like this:

[

{

"id": 1,

"name": "Leanne Graham",

"username": "Bret",

"email": "Sincere@april.biz",

"address": {

  "street": "Kulas Light",

  "suite": "Apt. 556",

  "city": "Gwenborough",

  "zipcode": "92998-3874",

  "geo": {

    "lat": "-37.3159",

    "lng": "81.1496"

  }

},

"phone": "1-770-736-8031 x56442",

"website": "hildegard.org",

"company": {

  "name": "Romaguera-Crona",

  "catchPhrase": "Multi-layered client-server neural-net",

  "bs": "harness real-time e-markets"

}

},

{

"id": 2,

"name": "Ervin Howell",

"username": "Antonette",

"email": "Shanna@melissa.tv",

"address": {

  "street": "Victor Plains",

  "suite": "Suite 879",

  "city": "Wisokyburgh",

  "zipcode": "90566-7771",

  "geo": {

    "lat": "-43.9509",

    "lng": "-34.4618"

  }

},

"phone": "010-692-6593 x09125",

"website": "anastasia.net",

"company": {

  "name": "Deckow-Crist",

  "catchPhrase": "Proactive didactic contingency",

  "bs": "synergize scalable supply-chains"

}

},

{

"id": 3,

"name": "Clementine Bauch",

"username": "Samantha",

"email": "Nathan@yesenia.net",

"address": {

  "street": "Douglas Extension",

  "suite": "Suite 847",

  "city": "McKenziehaven",

  "zipcode": "59590-4157",

  "geo": {

    "lat": "-68.6102",

    "lng": "-47.0653"

  }

},

"phone": "1-463-123-4447",

"website": "ramiro.info",

"company": {

  "name": "Romaguera-Jacobson",

  "catchPhrase": "Face to face bifurcated interface",

  "bs": "e-enable strategic applications"

}

},

{

"id": 4,

"name": "Patricia Lebsack",

"username": "Karianne",

"email": "Julianne.OConner@kory.org",

"address": {

  "street": "Hoeger Mall",

  "suite": "Apt. 692",

  "city": "South Elvis",

  "zipcode": "53919-4257",

  "geo": {

    "lat": "29.4572",

    "lng": "-164.2990"

  }

},

"phone": "493-170-9623 x156",

"website": "kale.biz",

"company": {

  "name": "Robel-Corkery",

  "catchPhrase": "Multi-tiered zero tolerance productivity",

  "bs": "transition cutting-edge web services"

}

},

{

"id": 5,

"name": "Chelsey Dietrich",

"username": "Kamren",

"email": "Lucio_Hettinger@annie.ca",

"address": {

  "street": "Skiles Walks",

  "suite": "Suite 351",

  "city": "Roscoeview",

  "zipcode": "33263",

  "geo": {

    "lat": "-31.8129",

    "lng": "62.5342"

  }

},

"phone": "(254)954-1289",

"website": "demarco.info",

"company": {

  "name": "Keebler LLC",

  "catchPhrase": "User-centric fault-tolerant solution",

  "bs": "revolutionize end-to-end systems"

}

},

{

"id": 6,

"name": "Mrs. Dennis Schulist",

"username": "Leopoldo_Corkery",

"email": "Karley_Dach@jasper.info",

"address": {

  "street": "Norberto Crossing",

  "suite": "Apt. 950",

  "city": "South Christy",

  "zipcode": "23505-1337",

  "geo": {

    "lat": "-71.4197",

    "lng": "71.7478"

  }

},

"phone": "1-477-935-8478 x6430",

"website": "ola.org",

"company": {

  "name": "Considine-Lockman",

  "catchPhrase": "Synchronised bottom-line interface",

  "bs": "e-enable innovative applications"

}

},

{

"id": 7,

"name": "Kurtis Weissnat",

"username": "Elwyn.Skiles",

"email": "Telly.Hoeger@billy.biz",

"address": {

  "street": "Rex Trail",

  "suite": "Suite 280",

  "city": "Howemouth",

  "zipcode": "58804-1099",

  "geo": {

    "lat": "24.8918",

    "lng": "21.8984"

  }

},

"phone": "210.067.6132",

"website": "elvis.io",

"company": {

  "name": "Johns Group",

  "catchPhrase": "Configurable multimedia task-force",

  "bs": "generate enterprise e-tailers"

}

},

{

"id": 8,

"name": "Nicholas Runolfsdottir V",

"username": "Maxime_Nienow",

"email": "Sherwood@rosamond.me",

"address": {

  "street": "Ellsworth Summit",

  "suite": "Suite 729",

  "city": "Aliyaview",

  "zipcode": "45169",

  "geo": {

    "lat": "-14.3990",

    "lng": "-120.7677"

  }

},

"phone": "586.493.6943 x140",

"website": "jacynthe.com",

"company": {

  "name": "Abernathy Group",

  "catchPhrase": "Implemented secondary concept",

  "bs": "e-enable extensible e-tailers"

}

},

{

"id": 9,

"name": "Glenna Reichert",

"username": "Delphine",

"email": "Chaim_McDermott@dana.io",

"address": {

  "street": "Dayna Park",

  "suite": "Suite 449",

  "city": "Bartholomebury",

  "zipcode": "76495-3109",

  "geo": {

    "lat": "24.6463",

    "lng": "-168.8889"

  }

},

"phone": "(775)976-6794 x41206",

"website": "conrad.com",

"company": {

  "name": "Yost and Sons",

  "catchPhrase": "Switchable contextually-based project",

  "bs": "aggregate real-time technologies"

}

},

{

"id": 10,

"name": "Clementina DuBuque",

"username": "Moriah.Stanton",

"email": "Rey.Padberg@karina.biz",

"address": {

  "street": "Kattie Turnpike",

  "suite": "Suite 198",

  "city": "Lebsackbury",

  "zipcode": "31428-2261",

  "geo": {

    "lat": "-38.2386",

    "lng": "57.2232"

  }

},

"phone": "024-648-3804",

"website": "ambrose.net",

"company": {

  "name": "Hoeger LLC",

  "catchPhrase": "Centralized empowering task-force",

  "bs": "target end-to-end models"

}

}

]

Please put it in a

 element of your HTML file. For instance, 

[

{

"id": 1,

"name": "Leanne Graham",

"username": "Bret",

"email": "Sincere@april.biz",

"address": {

  "street": "Kulas Light",

  "suite": "Apt. 556",

  "city": "Gwenborough",

  "zipcode": "92998-3874",

  "geo": {

    "lat": "-37.3159",

    "lng": "81.1496"

  }

},

"phone": "1-770-736-8031 x56442",

"website": "hildegard.org",

"company": {

  "name": "Romaguera-Crona",

  "catchPhrase": "Multi-layered client-server neural-net",

  "bs": "harness real-time e-markets"

}

},

...

]

Take out your JavaScript editor (VSC, or JS panel in CodePen), and pull these data into a JavaScript Object. You should filter the name of these users with the condition that the first letter of the name is "C". And print messages in the console like this:

Clementine Bauch (ID 3) has an email Nathan@yesenia.net

Chelsey Dietrich (ID 5) has an email Lucio_Hettinger@annie.ca

Clementina DuBuque (ID 10) has an email Rey.Padberg@karina.biz

Please do not print messages into the HTML content. I will only check the answer in DevTools. Name your codes "JS1" in CodePen.

Hints:

Get element by some method provided in JavaScript.

Get text content in the selected element.

Parse the JSON text to JavaScript Object.

Iterate over the Object in a reasonable way.

Filter the String in a reasonable way.

Display the result with the console.log() method.

参考GPT和自己的思路:

好的,这里是解决这个问题的代码示例:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Filter JSON data in JavaScript</title>
  </head>
  <body>
    <pre id="data"></pre>
    <script>
      fetch('data.json')
        .then(response => response.json())
        .then(data => {
          const filteredUsers = data.filter(user => user.name.startsWith("C"));
          filteredUsers.forEach(user => {
            console.log(`${user.name} (ID ${user.id}) has an email ${user.email}`);
          });
        })
        .catch(error => console.error(error));
    </script>
  </body>
</html>

这段代码会向服务器请求名为 data.json 的JSON数据并将其解析为JavaScript对象。然后它会过滤出所有名字以"C"开头的用户,对每个用户输出一个信息到控制台,包含用户的名字、ID和电子邮件地址。

注意,在这个示例中,我们将JSON数据放入了 <pre> 元素中以便于查看,但实际上我们并没有使用它来解决问题。