Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何对每行有3个值的数组进行排序?_Javascript - Fatal编程技术网

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
开始-