从对象数组中返回名称数组

我知道如何遍历一个对象并打印出我想要的一组值,但是我无法按照我想要的顺序打印它。


**问题是: **


给定一组游戏结果记录,通过返回一组玩家姓名来确定所有玩家是谁。


该数组应按遇到名称的方式排序。


示例输入:


[

  { winner: 'Alishah', loser: 'Bob',    loser_points: 3 },

  { winner: 'Maria',   loser: 'Xu Jin', loser_points: 1 },

  { winner: 'Elise',   loser: 'Bob',    loser_points: 2 },

  { winner: 'Elise',   loser: 'Maria',  loser_points: 4 },

  { winner: 'Alishah', loser: 'Maria',  loser_points: 2 },

  { winner: 'Maria',   loser: 'Xu Jin', loser_points: 3 },

  { winner: 'Xu Jin',  loser: 'Elise',  loser_points: 2 }

]

预期结果:


['Alishah','Bob','Maria','徐进','Elise']


**我到目前为止的代码:**


let data = [

  { winner: 'Alishah', loser: 'Bob',    loser_points: 3 },

  { winner: 'Maria',   loser: 'Xu Jin', loser_points: 1 },

  { winner: 'Elise',   loser: 'Bob',    loser_points: 2 },

  { winner: 'Elise',   loser: 'Maria',  loser_points: 4 },

  { winner: 'Alishah', loser: 'Maria',  loser_points: 2 },

  { winner: 'Maria',   loser: 'Xu Jin', loser_points: 3 },

  { winner: 'Xu Jin',  loser: 'Elise',  loser_points: 2 }

];


   

console.log(main(data));


一只萌萌小番薯
浏览 168回答 3
3回答

ibeautiful

您可以为此使用.flatMap()和:Set()let data = [  { winner: 'Alishah', loser: 'Bob',    loser_points: 3 },  { winner: 'Maria',   loser: 'Xu Jin', loser_points: 1 },  { winner: 'Elise',   loser: 'Bob',    loser_points: 2 },  { winner: 'Elise',   loser: 'Maria',  loser_points: 4 },  { winner: 'Alishah', loser: 'Maria',  loser_points: 2 },  { winner: 'Maria',   loser: 'Xu Jin', loser_points: 3 },  { winner: 'Xu Jin',  loser: 'Elise',  loser_points: 2 }];const res = [...new Set(data.flatMap(x=>[x.winner, x.loser]))]console.log( res )解释:使用.flatMap()方法我们将首先得到一个数组数组。这里的内部数组将是winner&loser名称的数组。然后我们将展平数组以获得所有玩家姓名的单个数组。最后使用[...new Set(array)]我们将在数组中获得不同的名称以实现所需的结果。

哈士奇WWW

您可以使用Array.reduce()andSet来获取名称并删除重复项Array.reduce()遍历数组。所以你可以将所有winner的 s 和losers 推送到初始的空数组中。然后你可以创建一个新的Set. 这样,您可以删除重复项(因为所有项目都是string)。之后,您可以使用以下命令将其转换回数组spread syntax:[...new Set(array)]const arr = [  { winner: 'Alishah', loser: 'Bob',    loser_points: 3 },  { winner: 'Maria',   loser: 'Xu Jin', loser_points: 1 },  { winner: 'Elise',   loser: 'Bob',    loser_points: 2 },  { winner: 'Elise',   loser: 'Maria',  loser_points: 4 },  { winner: 'Alishah', loser: 'Maria',  loser_points: 2 },  { winner: 'Maria',   loser: 'Xu Jin', loser_points: 3 },  { winner: 'Xu Jin',  loser: 'Elise',  loser_points: 2 }]const names = [...new Set(arr.reduce((acc, cur) => [...acc, cur.winner, cur.loser], []))]console.log(names)

叮当猫咪

var players = collection.reduce((acc, player) => {    if(!acc.inStore[player.winner]) {        acc.players.push(player.winner)        acc.inStore[player.winner] = true    }    if(!acc.inStore[player.loser]) {        acc.players.push(player.loser)        acc.inStore[player.loser] = true    }    return acc;}, {players: [], inStore: {}}).players// ["Alishah", "Bob", "Maria", "Xu Jin", "Elise"]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript