从数组中获取特定用户信息

时间:2018-03-20 17:46:44

标签: javascript

我有以下功能:

function returnAge(PlayerId){
    var data = [
        {name : 'jack', isPlayer: true, games:[{id:343, age:12}, {id:3422, age :132}]},
        { id :2 , name : 'king'},
        {id: 145,   name: 'james'}
    ]


    let filteredData= data.filter(item=>item.isPlayer)
    let itemData = filteredData[0].games.find(game=>game.id===PlayerId)

    return itemData
}

console.log(returnAge(343))

如果用户是玩家,则该函数返回具有特定Id的用户的信息。我使用了一个过滤器然后使用find来获取基于过滤数据的信息。我正在寻找一种更好的方法来使用Reduce /析构函数或任何其他JavaScript功能。请欣赏任何建议。

2 个答案:

答案 0 :(得分:0)

您不需要使用这些功能过度复杂化解决方案,使用简单的static final以及函数for-loop

函数find不合适,因为它将遍历整个元素集。



filter

function returnAge(PlayerId) {
  var data = [{      name: 'jack',      isPlayer: true,      games: [{        id: 343,        age: 12      }, {        id: 3422,        age: 132      }]    },    {      id: 2,      name: 'king'    },    {      id: 145,      name: 'james'    }  ]

  for (var item of data) if (item.isPlayer) return item.games.find(g => g.id === PlayerId);
}

console.log(returnAge(343))




答案 1 :(得分:0)

您只能使用功能find



function returnAge(PlayerId){
    var data = [
        {name: 'jack', isPlayer: true, games:[{id:343, age:12}, {id:3422, age :132}]},
        {id: 2, name: 'king'},
        {id: 145, name: 'james'}
    ]

    return data.find(item=>item.isPlayer).games.find(game=>game.id===PlayerId)
}

console.log(returnAge(343))