Javascript 如何对每行有3个值的数组进行排序?
这是我的数组,我必须从最高平均等级排序到最低平均等级Javascript 如何对每行有3个值的数组进行排序?,javascript,Javascript,这是我的数组,我必须从最高平均等级排序到最低平均等级 let students= [ {name:"Petar", year:1, average:4.35}, {name:"Ivana", year:1, average:3.88}, {name:"Marko", year:2, average:2.27}, {name:"Davor", year:2, average:4.15}, {name:"Pet
let students= [
{name:"Petar", year:1, average:4.35},
{name:"Ivana", year:1, average:3.88},
{name:"Marko", year:2, average:2.27},
{name:"Davor", year:2, average:4.15},
{name:"Petra", year:3, average:3.99},
{name:"Ivan", year:3, average:4.33},
{name:"Goran", year:3, average:3.74}
];
students.sort(function(a,b){
return a[1] - b[1];
});
sort
函数中的参数a
和b
是对象,而不是数组。使用dot
访问对象而不是括号的属性
让学生=[
{名称:“佩塔”,年份:1,平均数:4.35},
{姓名:“伊凡娜”,年份:1,平均数:3.88},
{姓名:“马尔科”,年份:2,平均数:2.27},
{姓名:“达沃”,年份:2,平均数:4.15},
{姓名:“佩特拉”,年份:3,平均数:3.99},
{姓名:“伊万”,年份:3,平均数:4.33},
{姓名:“戈兰”,年份:3,平均数:3.74}
];
常量输出=students.sort((a,b)=>b.average-a.average);
控制台日志(输出)代码>这些不是数组,而是对象->注释排序变异原始并返回原始,因此输出===students
排序()
变异原始数组使用students.slice(0).sort(..).map(x=>({…x}))
。1) slice()
以防止原始数组发生变异。2) map()
删除引用并创建真实副本。@MaheerAli这取决于相关读者的需要。您可能不会发现数组发生变异会带来麻烦。slice还有一个默认的第一个参数0
-如果begin
未定义,slice
从索引0
开始-