下面有一個名為 cricket mania 的物件,由不同國家的凈跑分和得分組成。我正在嘗試在 JS 中撰寫代碼,以首先根據他們的積分對團隊進行排序,如果他們有相同的積分,則使用 Net Run 作為決勝局。在我們的例子中,孟加拉國和尼泊爾得分相同,所以我們將考慮這兩個國家的凈運行,即孟加拉國的 -1.176 和尼泊爾的 -0.849。由于尼泊爾的凈跑數最高,我們將首先安排尼泊爾的凈跑。我已經對這些點進行了排序,但我無法弄清楚如何使用網路運行來替換相似的點。我需要將以下陣列登錄到控制臺 ['3'、'4'、'5'、'6'、'-0.849'、'-1.176']。
這是我的代碼筆的鏈接
``
const cricketMania = {
India: {
netRuns: "1.319",
points: "8"
},
Pakistan: {
netRuns: "1.028",
points: "6"
},
Saudi: {
netRuns: "0.874",
points: "5"
},
Nepal: {
netRuns: "-0.849",
points: "4"
},
Bangladesh: {
netRuns: "-1.176",
points: "4"
},
Zimbabwe: {
netRuns: "-1.138",
points: "3"
}
};
var point = []; // [ '8', '6', '5', '8', '4', '3' ]
for (let m in cricketMania) {
point.push(cricketMania[m]["points"]);
}
var sortedpoints = point.sort((a, b) => a - b);
document.write(sortedpoints); //[ '3', '4', '5', '6', '8', '8' ]
``
uj5u.com熱心網友回復:
這不是最短的可能解決方案,但它可能會說明問題。
- 我們將物件轉換為包含國家名稱和其他值的陣列。
- 然后我們按點排序陣列,然后按 netRuns(如果點相等)。
排序也可以縮短為像這樣的結構
asArray.sort((a, b) => (a.points * 100 a.netRuns) - (b.points * 100 b.netRuns));
我們用來相乘的常數應該大于 max 的模塊b.netRuns。
const cricketMania = {
India: {
netRuns: "1.319",
points: "8"
},
Pakistan: {
netRuns: "1.028",
points: "6"
},
Saudi: {
netRuns: "0.874",
points: "5"
},
Nepal: {
netRuns: "-0.849",
points: "4"
},
Bangladesh: {
netRuns: "-1.176",
points: "4"
},
Zimbabwe: {
netRuns: "-1.138",
points: "3"
}
};
const asArray = Object.entries(cricketMania).map(([key, val]) => ({
name: key,
netRuns: val.netRuns,
points: val.points
}));
asArray.sort((a, b) => a.points > b.points ? 1 :
a.points < b.points ? -1 :
a.netRuns > b.netRuns ? 1 :
a.netRuns < b.netRuns ? -1 : 0);
console.log(asArray);
uj5u.com熱心網友回復:
您可以借助 3 個 JS 函式、 和 compare 函式輕松實作Object.values()此Array.map()要求Array.sort()。
現場演示:
const cricketMania = {
India: {
netRuns: "1.319",
points: "8"
},
Pakistan: {
netRuns: "1.028",
points: "6"
},
Saudi: {
netRuns: "0.874",
points: "5"
},
Nepal: {
netRuns: "-0.849",
points: "4"
},
Bangladesh: {
netRuns: "-1.176",
points: "4"
},
Zimbabwe: {
netRuns: "-1.138",
points: "3"
}
};
const res = Object.values(cricketMania).map(({ points }) => points).sort((a, b) => a - b);
console.log(res);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/531004.html
