Javascript 使用Object.values()对对象的对象进行排序

Javascript 使用Object.values()对对象的对象进行排序,javascript,ecmascript-6,Javascript,Ecmascript 6,我正在尝试使用object.values()、sort()和map()将对象的对象排序到基于嵌套值的页面中。它在FF中工作得非常完美,但Chrome由于某些原因返回了充满未排序项目的页面 列表的结构示例: { 1: { id: 1, rank: 10, name: "foo" }, 2: { id: 2, rank: 24, name: "bar&

我正在尝试使用
object.values()
sort()
map()
将对象的
对象排序到基于嵌套值的页面中。它在FF中工作得非常完美,但Chrome由于某些原因返回了充满未排序项目的页面

列表的结构示例

{
    1: {
        id: 1,
        rank: 10,
        name: "foo"
    },
    2: {
        id: 2,
        rank: 24,
        name: "bar"
    },
    3: {
        id: 3,
        rank: 11,
        name: "baz"
    },
    ...
}
例如:

const out=document.getElementById(“out”);
const sortBy=“rank”;
每页常数=10;
让list={};
for(设i=1;i<50;i++){
列表[i]={
id:我,
排名:兰特(10200),
姓名:generateName(兰特(6,12))
}
}
常量值=对象值(列表);
常量页面=值。排序((a,b)=>{
如果(排序==“排名”){
返回a.rankb.name;
}
})
.map((项目,i)=>{
返回i%每页===0?个值。切片(i,i+每页):null;
}).过滤器(第=>页);
用于(常量页,共页){
用于(第页的常量项){
out.value+=`${item.rank}\n`;
}
}
//助手
函数随机数(最小值、最大值){
min=数学单元(min);
最大值=数学楼层(最大值);
返回Math.floor(Math.random()*(max-min+1)+min);
}
函数generateName(长度){
让结果=“”;
常量字符='abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz012456789';
const charactersLength=characters.length;
对于(变量i=0;i

谢谢@Pointy。所以答案应该是这样的

const pages=values.sort((a,b)=>a.rank
您的排序比较器功能不正确。比较器应该返回一个数值:如果
a
b
之前,则返回负值;如果
a
b
之后,则为正值;如果它们相等(根据排序标准),则为零。