下面有一个名为板球狂热的物体,由不同国家的净跑和得分组成。我试图在JS中编写一段代码,首先根据球队的分数对他们进行排序,如果他们有相同的分数,使用网跑作为平局者。在我们的例子中,孟加拉国和尼泊尔得分相同,因此我们将考虑这两个国家的净运行情况,即孟加拉国的1.176和尼泊尔的-0.849。由于尼泊尔有最高的净运量,我们将首先安排尼泊尔的净跑。我已经对这些点进行了排序,但我无法弄清楚如何用净运行来替换类似的点。我需要下面的数组登录到控制台'3‘、'4’、'5‘、'6’、'-0.849‘、'-1.176’.I肯定会感谢这个社区的人们花时间来解决我被塞进去这个小小的疑问,并且非常乐意有人在这个学习过程中帮助我:)
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' ]
发布于 2022-11-09 18:02:14
这不是最短的解决办法,但它可能会给出要点。
排序也可以缩短为结构,如
asArray.sort((a, b) => (a.points * 100 + a.netRuns) - (b.points * 100 + b.netRuns));
我们用来乘的常数应该大于最大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);
发布于 2022-11-10 07:53:53
您可以通过3个JS函数、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://stackoverflow.com/questions/74379088
复制相似问题