我試圖通過鍵連接 2 個物件,這些物件中有 2 個具有相同名稱但具有不同值的欄位。
var players = [{ id : 'a', name : "player1",team:1},{ id : 'b', name : "player2",team:1}, { id : 'c', name : "player3",team:2}]
var teams = [{ id : 1, name : "LA"}, {id : 2, name: "IL"}]
我希望能夠得到類似的結果:
var mergedList = [{ id : 'a', name : "player1",team.id:1, team.name: "LA"},
{ id : 'b', name : "player2",team__id:1, team_name: "LA"},
{ id : 'c', name : "player3",team__id:2, team_name: "US"}]
這是我到目前為止嘗試過的:
const mergedList = players.map((player) => ({
...player,
...teams.find((team) => team__id === player_team),
}));
但是來自球員的姓名欄位被球隊提交的姓名所取代。
uj5u.com熱心網友回復:
您需要為 中的欄位設定新的屬性鍵teams。請記住,密鑰不允許包含.
const mergedList = players.map((player) => {
const team = teams.find((team) => team.id === player.team);
return {
...player,
team_id: team?.id,
team_name: team?.name,
}
});
uj5u.com熱心網友回復:
team.id并且team.name是無效的鍵。您可以team使用所需的物件設定鍵
const players = [{ id : 'a', name : "player1",team:1},{ id : 'b', name : "player2",team:1}, { id : 'c', name : "player3",team:2}];
const teams = [{ id : 1, name : "LA"}, {id : 2, name: "IL"}];
const mergedList = players.map((player) => ({
...player,
team: teams.find((team) => team.id === player.team)
}));
console.log(mergedList)
uj5u.com熱心網友回復:
名稱正在被替換,因為Player和Team物件都有一個name屬性,并且解決方案會覆寫namewhile 組合物件。
由于您想分別訪問team物件id和name使用team.id和team.name,一個合適的解決方案可能是在玩家物件中放置團隊物件,例如:
var players = [{ id : 'a', name : "player1",team:1},{ id : 'b', name : "player2",team:1}, { id : 'c', name : "player3",team:2}]
var teams = [{ id : 1, name : "LA"}, {id : 2, name: "IL"}]
const mergedList = players.map((player) => ({
...player,
team: teams.find((team) => team.id === player.team),
}));
mergedList.forEach(ele => {
console.log(`${ele.id}, ${ele.name} is in team ${ele.team.id}, ${ele.team.name}`);
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/395850.html
標籤:javascript 节点.js Vue.js 加入
