我正在開發節點 js 應用程式,我面臨一個問題,我必須在陣列中添加位置點,但每個位置點都不同,比如第一個陣列/物件需要 10,然后下一個陣列/物件必須是 7
let converter = [
{ name: 'team-1', killPoint: 8 },
{ name: 'team-2', killPoint: 7 },
{ name: 'team-7', killPoint: 56 },
{ name: 'team-9', killPoint: 68 }
]
const pointsystem = [10, 7, 6, 5, 4, 3, 2, 1, 0];
const positionAdd = (objects) => {
let i = 0
const posRes = {};
objects.forEach(({
name,
killPoint
}) => {
posRes[name] = posRes[name] || {
name,
positionPoint: 0,
killPoint: 0,
};
posRes[name].positionPoint = pointsystem[i 1];
posRes[name].killPoint = killPoint;
});
return Object.values(posRes);
};
console.log(positionAdd(converter));
嘗試使用此代碼,但無法正常作業
想要的輸出
[
{ name: 'team-1', positionPoint: 10, killPoint: 8 },
{ name: 'team-2', positionPoint: 7, killPoint: 7 },
{ name: 'team-7', positionPoint: 6, killPoint: 56 },
{ name: 'team-9', positionPoint: 5, killPoint: 68 }
]
如果有更多的團隊,那么點應該一直持續到 0....
uj5u.com熱心網友回復:
使用map()而不是附加到結果陣列。
使用回呼函式的第二個引數來獲取陣列索引,并使用它來索引pointsystem.
使用物件擴展語法將其合并到來自converter.
let converter = [
{ name: 'team-1', killPoint: 8 },
{ name: 'team-2', killPoint: 7 },
{ name: 'team-7', killPoint: 56 },
{ name: 'team-9', killPoint: 68 }
]
const pointsystem = [10, 7, 6, 5, 4, 3, 2, 1, 0];
const positionAdd = (objects) => objects.map((obj, i) => ({...obj, positionPoint: pointsystem[i]}));
console.log(positionAdd(converter));
uj5u.com熱心網友回復:
下面也會改變原來的物件。我不確定OP的意圖是什么:
const data = [
{ name: 'team-1', killPoint: 8 },
{ name: 'team-2', killPoint: 7 },
{ name: 'team-7', killPoint: 56 },
{ name: 'team-9', killPoint: 68 }
],points = [10,7,6,5,4,3,2,1,0];
console.log(data.map((d,i)=>{
d.positionPoint=points[i]??0;
return d;
}));
uj5u.com熱心網友回復:
您將 1 添加到變數 i 中,但沒有在每個回圈后實作 i。您需要在每次迭代后將 i 增加 1。
例子:
posRes[name].positionPoint = pointsystem[i];
i = 1;
測驗:
let converter = [
{ name: 'team-1', killPoint: 8 },
{ name: 'team-2', killPoint: 7 },
{ name: 'team-7', killPoint: 56 },
{ name: 'team-9', killPoint: 68 }
]
const pointsystem = [10, 7, 6, 5, 4, 3, 2, 1, 0];
const positionAdd = (objects) => {
let i = 0
const posRes = {};
objects.forEach(({
name,
killPoint
}) => {
posRes[name] = posRes[name] || {
name,
positionPoint: 0,
killPoint: 0,
};
posRes[name].positionPoint = pointsystem[i];
i = 1;
posRes[name].killPoint = killPoint;
});
return Object.values(posRes);
};
console.log(positionAdd(converter));
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/504522.html
標籤:javascript 数组 目的
