小工具知识网

当前位置: 首页 > 行业知识 > 【JS】sort方法的基本使用与双重、多重排序:对象数组按照多个对象属性进行排序

行业知识

【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));
            ()()

上一篇:手机为什么自动联网?

下一篇:淘宝摩托罗拉V8手机性能深度解析,是否值得购买?