如何在javascript中返回对象数组?

问题描述

我有这个代码

var players = [{
    name: "Luka Modric",age: 33,debut: 2006,team: "Real Madrid",position: "Midfielder",country: "Croatian",url: "https://media.guim.co.uk/737d9bde5b3cf33b0230c887acfadf9e68c427bd/169_141_3371_2023/500.jpg",awards: [{
        name: "The Best FIFA Men's Player",year: 2016
      },{
        name: "Ballon",year: 2018
      },{
        name: "The Best FIFA Men's Player",year: 2018
      }
    ]
  },{
    name: "Cristiano Ronaldo",debut: 2003,team: "Juventus",position: "Forward",country: "Portugal",url: "https://media.guim.co.uk/f53bba20898fef82548e3b8369d68b3c9b25b4c1/1_189_3919_2351/500.jpg",year: 2017
      },{
        name: "European Golden Shoe",year: 2015
      },{
    name: "NGolo Kanté",age: 27,debut: 2007,team: "Chelsea",country: "France",url: "https://media.guim.co.uk/9aeaf1767280c511ff5295a293e9bafe20f35d65/0_129_4105_2463/500.jpg",awards: [{
        name: "FIFA FIFPro World XI",{
        name: "french Player of the Year",year: 2017
      }
    ]
  },{
    name: "Lionel Messi",age: 31,team: "Barcelona",country: "Argentina",url: "https://media.guim.co.uk/b035e8f52c5b5612121fdcf8b54bf149be4f67e7/0_211_3846_2307/500.jpg",awards: [{
        name: "FIFA World Player of the Year",year: 2009
      },year: 2019
      },];

如何在首次亮相年份等于2003时返回对象数组?

解决方法

看看JS Array Methods,特别是array.filter。此代码应满足您的要求:

var playersWhoDebutedIn2003 = players.filter(player => { return player.debut === 2003;});
,

使用Array#filter

players.filter(({debut}) => debut===2003);

在这里进行测试:

var players = [{ name: "Luka Modric",age: 33,debut: 2006,team: "Real Madrid",position: "Midfielder",country: "Croatian",url: "https://media.guim.co.uk/737d9bde5b3cf33b0230c887acfadf9e68c427bd/169_141_3371_2023/500.jpg",awards: [{ name: "The Best FIFA Men's Player",year: 2016 },{ name: "Ballon",year: 2018 },{ name: "The Best FIFA Men's Player",year: 2018 } ] },{ name: "Cristiano Ronaldo",debut: 2003,team: "Juventus",position: "Forward",country: "Portugal",url: "https://media.guim.co.uk/f53bba20898fef82548e3b8369d68b3c9b25b4c1/1_189_3919_2351/500.jpg",year: 2017 },{ name: "European Golden Shoe",year: 2015 },{ name: "NGolo Kanté",age: 27,debut: 2007,team: "Chelsea",country: "France",url: "https://media.guim.co.uk/9aeaf1767280c511ff5295a293e9bafe20f35d65/0_129_4105_2463/500.jpg",awards: [{ name: "FIFA FIFPro World XI",{ name: "French Player of the Year",year: 2017 } ] },{ name: "Lionel Messi",age: 31,team: "Barcelona",country: "Argentina",url: "https://media.guim.co.uk/b035e8f52c5b5612121fdcf8b54bf149be4f67e7/0_211_3846_2307/500.jpg",awards: [{ name: "FIFA World Player of the Year",year: 2009 },year: 2019 },];
               
let result = players.filter(({debut}) => debut===2003);
console.log(result);

,

您可以像这样使用数组的过滤功能

players.filter(player => player.debut === 2003)

请参见下面的输出。

var players = [{
    name: "Luka Modric",awards: [{
        name: "The Best FIFA Men's Player",year: 2016
      },{
        name: "Ballon",year: 2018
      },{
        name: "The Best FIFA Men's Player",year: 2018
      }
    ]
  },{
    name: "Cristiano Ronaldo",year: 2017
      },{
        name: "European Golden Shoe",year: 2015
      },{
    name: "NGolo Kanté",awards: [{
        name: "FIFA FIFPro World XI",{
        name: "French Player of the Year",year: 2017
      }
    ]
  },{
    name: "Lionel Messi",awards: [{
        name: "FIFA World Player of the Year",year: 2009
      },year: 2019
      },];

var output = players.filter(player => player.debut === 2003);
console.log(output);