2017-12-15 11 views
0

多次元配列(プレイヤーとのマッチリスト)があり、この配列をフィルターして一意のプレーヤーオブジェクトを取得する必要があります。多次元配列フィルターに反応する/ find

次のコードは動作しますが、期待した結果が異なります。

Const aPlayer=matchs 
    .filter(match => match.players.find(player => player.id  
===id)) 

変数aPlayerには、このプレーヤーのすべての一致が含まれています。

しかし、私はプレーヤーのオブジェクトデータが必要です。私はあなたのデータは、このような構造かはわからない

答えて

1

Matches: List<Match> 
Match: { 
    ..., 
    players: List<Player> 
} 
Player: { 
    id: Index, 
    ... 
} 

もしそうなら、このように、あなたがそれを行うことができます。

// still contains duplicates, but that's not the issue here 
const allPlayers = matchs 
    .map(x => x.players) 
    .reduce(x => (dest, val) => dest.concat(val), []); 

const player = allPlayers.find(x => x.id === id); 
+0

が動作しない、にconsole.log(allPLayers)= "function(dest、val){return dest.concat(val);}" – iCode

+0

正確に何がうまくいかず、エラー/結果は何ですか? – Tobias

+0

Const allPlayers = matchess以下はconst player = allPlayers.find(x => x.id === id)です。 );仕事をしてください、ありがとう – iCode