行业知识
【JS】sort方法的基本使用与双重、多重排序:对象数组按照多个对象属性进行排序
2026-10-19 14:23:34
来源:互联网转载
【JS】对象数组按照多个对象属性进行排序(sort方法)
- 一、sort():用于对数组的元素进行排序,并返回数组,arr.sort()默认为升序排列
- 二、sort()用法
- 三、双重、多重排序:对象数组按照多个对象属性进行排序(sort方法)
- 四、多���排序函数封装(还可以更简略,这里我只是举个例子)
一、sort():用于对数组的元素进行排序,并返回数组,arr.sort()默认为升序排列
二、sort()用法
- arrayObject.sort(sort),参数sort可选,如果调用该方法时不传参数sort,将按照字符编码的顺序进行排序(升序)
let arr = [5,3,1,6,4,2,3];arr.sort(); // [1, 2, 3, 3, 4, 5, 6]
- 如需按照其他标准进行排序,就需要提供比较函数,比较函数应该具有两个参数 a 和 b,其返回值如下:
- a
- a ===b,则返回 0。
- a > b,则返回1。
let arr = [5,3,1,6,4,2,3];let result=arr.sort(function(a,b){ return a-b;});console.log(result)// [1, 2, 3, 3, 4, 5, 6]//以上方法是对number数组排序的,如果是string的话则不能用 a-b ,应当如下:let arr = ["A","cds","esadf","As"];let result=arr.sort(function(a,b){ if(a > b){ return 1; }});console.log(result)// ["A", "As", "cds", "esadf"]三、双重、多重排序:对象数组按照多个对象属性进行排序(sort方法)
- 先按学生的总分排序,如果总分相等,我们再按照语文成绩排序,依次类推。
let students = [ { name: "1", totalScore: 196, Chinese: 100, math: 96 }, { name: "2", totalScore: 198, Chinese: 99, math: 99 }, { name: "3", totalScore: 185, Chinese: 88, math: 97 }, { name: "4", totalScore: 196, Chinese: 96, math: 100 }, { name: "4", totalScore: 196, Chinese: 98, math: 98 }, { name: "5", totalScore: 180, Chinese: 90, math: 90 }, ]; let result = students.sort((a, b) => { if (a.totalScore === b.totalScore) { if (a.Chinese b.Chinese) { return -1; } else { return 0; } } else { return b.totalScore - a.totalScore; //降序 } }); console.log(result); //[ { name: "2", totalScore: 198, Chinese: 99, math: 99 }, { name: "1", totalScore: 196, Chinese: 100, math: 96 }, { name: "4", totalScore: 196, Chinese: 98, math: 98 }, { name: "4", totalScore: 196, Chinese: 96, math: 100 }, { name: "3", totalScore: 185, Chinese: 88, math: 97 }, { name: "5", totalScore: 180, Chinese: 90, math: 90 }, ];四、多重排序函数封装(还可以更简略,这里我只是举个例子)
filterData(a, b) { //s,s1,s3等是你想要排序的属性 if (a["s"].length === b["s"].length) { if (a["s1"] == b["s1"]) { if (a["s3"].length b["s3"].length) { return -1; } else { return 0; } } else { return b["s1"] - a["s1"]; } } else { return ( b["s"].length - a["s"].length ); } },// console.log(数组.sort(filterData));()()
- 先按学生的总分排序,如果总分相等,我们再按照语文成绩排序,依次类推。
- 如需按照其他标准进行排序,就需要提供比较函数,比较函数应该具有两个参数 a 和 b,其返回值如下:
- arrayObject.sort(sort),参数sort可选,如果调用该方法时不传参数sort,将按照字符编码的顺序进行排序(升序)
上一篇:手机为什么自动联网?