我有以下功能:
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功能。请欣赏任何建议。
答案 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))