gpt4 book ai didi

javascript - 为什么我不能按对象的实例排序?

转载 作者:行者123 更新时间:2023-11-29 18:43:12 25 4
gpt4 key购买 nike

我正在尝试根据每个玩家的平均得分对对象 players 进行排序 - 然后返回数组中的前 3 名玩家。

我得到 sort is not a function 这让我觉得我没有在正确的数据类型上调用它(我试图按一个数字排序,称为“平均”) .

我已经尝试用多种方式编写该函数,希望在 players 中访问 playeraverage 属性,但是继续获取 sort is not a function

下面是我的代码(不包括已经可用的函数):

class Player {
constructor(player_id, score) {
this.player_id = player_id;
this.scores = [score];
this.total = score;
this.average = this.averageScore();
}

averageScore() {
return this.scores.length ? this.total / this.scores.length : 0;
}

};

class LeaderBoard {

constructor() {
this.players = {};
}

top = (num_players) => {
var sorted = this.players.sort((a, b) => (a.average > b.average) ? 1 : -1)
return sorted.slice(0, num_players);
}

};

我希望它在按平均值排序后返回索引 0 到 num_players 的数组,但我得到的是 sort is not a function - 我做错了什么?

最佳答案

看来您的对象 this.players 带有键作为玩家的名称。你想得到对象作为结果。如果是这种情况,请使用 Objects.keys 获得前 3 名,然后使用 reduce() 转换回对象。

var sorted = Object.entries(this.players)
.sort(([,v1], [,v2]) => v1.average - v2.average)
.slice(0,num_players)
.reduce((ac,[k]) => ({...ac,[k]:this.players[k]}),{})

关于javascript - 为什么我不能按对象的实例排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55604251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com