我需要根據玩家 ID 將資料從陣列中分離出來。我得到的資料庫是這樣的:
var database =[
{
player: 1,
level: 1,
score: 20
},
{
player: 2,
level: 1,
score: 25
},
{
player: 3,
level: 1,
score: 7
},
{
player: 1,
level: 2,
score: 25
},
{
player: 2,
level: 2,
score: 7
}
]
一點一點地,包含新玩家的新物件將被添加,舊物件將消失,因為資料庫限制為 40 個條目。這意味著資料庫是動態變化的。
我的目標是根據玩家 ID 將物件推送到新的陣列中。所以結果必須是這樣的:
var player1 = [
{
player: 1,
level: 1,
score: 20
},
{
player: 1,
level: 2,
score: 25
}
]
var player2 = [
{
player: 2,
level: 1,
score: 25
},
{
player: 2,
level: 2,
score: 7
}
]
var player3 = [
{
player: 3,
level: 1,
score: 7
}
]
uj5u.com熱心網友回復:
首先,您可以將陣列轉換為物件以改進訪問,然后您可以將物件屬性分配給變數:
const database = [
{
player: 1,
level: 1,
score: 20
},
{
player: 2,
level: 1,
score: 25
},
{
player: 3,
level: 1,
score: 7
},
{
player: 1,
level: 2,
score: 25
},
{
player: 2,
level: 2,
score: 7
}
];
const { player1, player2, player3 } = database.reduce((acc, el) => {
if (!('player' el.player in acc)) acc['player' el.player] = [el];
else acc['player' el.player].push(el);
return acc
}, {});
console.log(player1, player2, player3);
uj5u.com熱心網友回復:
雖然可以用動態名稱創建全域變數,但不能用動態名稱創建非全域變數,而且全域環境已經足夠擁擠,創建一堆新的全域變數不是最佳實踐。
相反,使用一個Map:
const playerArrays = new Map();
for (const entry of database) {
const key = `player${entry.player}`;
const array = playerArrays.get(key);
if (!array ) {
// Haven't seen this one yet, add a new array
playerArrays.set(key, [entry]);
} else {
// We have the array, add to it
array.push(entry);
}
}
然后你通過使用playerArrays.get("player1")等等來獲得一個單獨的陣列。
現場示例:
顯示代碼片段
var database = [{
player: 1,
level: 1,
score: 20
},
{
player: 2,
level: 1,
score: 25
},
{
player: 3,
level: 1,
score: 7
},
{
player: 1,
level: 2,
score: 25
},
{
player: 2,
level: 2,
score: 7
}
];
const playerArrays = new Map();
for (const entry of database) {
const key = `player${entry.player}`;
const array = playerArrays.get(key);
if (!array ) {
// Haven't seen this one yet, add a new array
playerArrays.set(key, [entry]);
} else {
// We have the array, add to it
array.push(entry);
}
}
console.log("player1:", playerArrays.get("player1"));
.as-console-wrapper {
max-height: 100% !important;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/361592.html
標籤:javascript 数组 目的
上一篇:從串列中添加物件變數
下一篇:離子造型容器
