第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從對象數(shù)組中返回名稱數(shù)組

從對象數(shù)組中返回名稱數(shù)組

一只萌萌小番薯 2022-06-05 16:29:09
我知道如何遍歷一個對象并打印出我想要的一組值,但是我無法按照我想要的順序打印它。**問題是: **給定一組游戲結(jié)果記錄,通過返回一組玩家姓名來確定所有玩家是誰。該數(shù)組應(yīng)按遇到名稱的方式排序。示例輸入:[  { 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 }]預(yù)期結(jié)果:['Alishah','Bob','Maria','徐進(jìn)','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));
查看完整描述

3 回答

?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗 獲得超6個贊

您可以為此使用.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()方法我們將首先得到一個數(shù)組數(shù)組。這里的內(nèi)部數(shù)組將是winner&loser名稱的數(shù)組。

  • 然后我們將展平數(shù)組以獲得所有玩家姓名的單個數(shù)組。

  • 最后使用[...new Set(array)]我們將在數(shù)組中獲得不同的名稱以實現(xiàn)所需的結(jié)果。


查看完整回答
反對 回復(fù) 2022-06-05
?
哈士奇WWW

TA貢獻(xiàn)1799條經(jīng)驗 獲得超6個贊

您可以使用Array.reduce()andSet來獲取名稱并刪除重復(fù)項


Array.reduce()遍歷數(shù)組。所以你可以將所有winner的 s 和losers 推送到初始的空數(shù)組中。


然后你可以創(chuàng)建一個新的Set. 這樣,您可以刪除重復(fù)項(因為所有項目都是string)。之后,您可以使用以下命令將其轉(zhuǎn)換回數(shù)組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)


查看完整回答
反對 回復(fù) 2022-06-05
?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗 獲得超12個贊

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"]


查看完整回答
反對 回復(fù) 2022-06-05
  • 3 回答
  • 0 關(guān)注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號