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
之后,则为正值;如果它们相等(根据排序标准),则为零。