document.write(arr + "
") document.write(arr.sort(sortNumber))

当a - b > 0时,a和b交换,这个就是升序。

如果把 return a - b 写成 return b - a,这样就是降序。

有了这个基础之后,我们可以做多字段排序了。

先来一个两个字段的排序例子:

var jsonStudents = [
    {name:"Dawson", totalScore:"197", Chinese:"100",math:"97"},
    {name:"HanMeiMei", totalScore:"196",Chinese:"99", math:"97"},
    {name:"HanMeiMei", totalScore:"196",Chinese:"99", math:"10"},
    {name:"HanMeiMei", totalScore:"196",Chinese:"99", math:"80"},
    {name:"LiLei", totalScore:"185", Chinese:"88", math:"97"},
    {name:"XiaoMing", totalScore:"196", Chinese:"96",math:"100"},
    {name:"Jim", totalScore:"196", Chinese:"98",math:"98"},
    {name:"Joy", totalScore:"198", Chinese:"99",math:"99"}
jsonStudents.sort(function(a,b){
    if(a.totalScore === b.totalScore){
        return b.Chinese - a.Chinese;
    return b.totalScore - a.totalScore;
console.log(jsonStudents);

再来一个三个字段的例子:

var jsonStudents = [
    {name:"Dawson", totalScore:"197", Chinese:"100",math:"97"},
    {name:"HanMeiMei", totalScore:"196",Chinese:"99", math:"97"},
    {name:"HanMeiMei", totalScore:"196",Chinese:"99", math:"10"},
    {name:"HanMeiMei", totalScore:"196",Chinese:"99", math:"80"},
    {name:"LiLei", totalScore:"185", Chinese:"88", math:"97"},
    {name:"XiaoMing", totalScore:"196", Chinese:"96",math:"100"},
    {name:"Jim", totalScore:"196", Chinese:"98",math:"98"},
    {name:"Joy", totalScore:"198", Chinese:"99",math:"99"}
jsonStudents.sort(function(a,b){
    if(a.totalScore === b.totalScore){
        if(b.Chinese === a.Chinese){
            return a.math - b.math;
        return b.Chinese - a.Chinese;
    return b.totalScore - a.totalScore;
console.log(jsonStudents);
对于需要多字段排序的数组,我们可以借用javascript的原生数组api来完成,这个api就是sort方法。arr.sort(sortby)这个方法的sortby参数可选,这个参数是一个回调方法。参数:该方法有两个参数,这两个参数是当前比较的两个元素。返回值:大于0时将两个值互换,否则不换。所以,我们就可以这样来写:function sortNumber(a,b)... 需求是这样的 例如有这样一个 数组 给你 排序 const js onStudents = [ {name:"张三", totalScore:"197", Chinese:"100",math:"97"}, {name:"李二", totalS... js Sort是一种通用的 排序 方法,可以通过多个属性对对象 数组 进行 排序 js Sort的公共API归结为一个名为sortByMultiple的方法。 此方法采用两个参数,每个参数都是 数组 。 sequence :要 排序 数组 。 必须是对象 数组 。 keys :代表要 排序 的属性名称的字符串 数组 。 如果此 数组 中的条目包含“。” 它将假定这表示一个子属性。 js Sort将向下导航对象图以查找属性。 在此版本中, js Sort假定将定义所有属性,而不是空对象。 js Sort可以按日期,数字和字符串值 排序 。 可以通过在属性字符串的开头附加“ [ASC]”或“ [DESC]”来设置每个属性的 排序 顺序。 如果未指定 排序 顺序,则默认为升序 排序 。 首先使用脚本标签或使用common JS / AMD(require JS )导入将脚本包含在页面中。 < script ty // 从小到大 arr1.sort((a, b) => a - b) // 箭头函数单行代码 可省 return console.log(arr1) // [1,2,3,7,8,10,20] // 从大到小 arr1.sort((a, b) => b - a) console.log(arr1) // [20,10,8,7,3,2,1] 对象单 字段 排序 // 对象单 字段 排序 var arr2 = [ /** 数组 根据 数组 对象中的某个属性值进行 排序 的方法 * 使用例子:newArray.sort(sortByArr(['number'],false)) //表示根据number属性降序排列;若第二个参数不传递,默认表示升序 排序 * @param attr 排序 的属性 ['name','sex'...],根据一个 字段 或者多个 字段 排序 * @param rev true表示升序排列,false降序 排序 function sortByArr(arr, rev) { if (rev == undefined) {
字段 同时 排序 在后端很好实现,直接order by field1 asc, field2 asc,field3 desc… 如下可实现在前端按照多 字段 同时 排序 : //测试数据 var items = [ {name:"linc",age:28,num:1234}, {name:"linc",age:28,num:12345}, {name:"kiki",age:20,num:
javascript 中,对象和 数组 是两种不同的类型,这和php中的 数组 概念不同。在 javascript 中,也有一些精妙的算法,用来对一些对象进行 排序 。我在面试迅雷的时候,也拿到一道题,当时做题的时候考虑到时间,没有去仔细研究,回来后再读了一些方法,就知道真正的考点在哪里了。 我们现在有一组“学生”对象,包含“名字,年龄”等属性,现在要求一个算法,把这些对象放在一个 数组 里,可以实现按照...
var element1 = {title : "mytitle1", orderIndex : 0}; var element2 = {title : "mytitle2", orderIndex : 1}; var array = new Array(); array.push(element1); array.push(element2); //...
需要 排序 数组 以及 排序 字段 为rank: let data=[{text:"测试01",value:1,rank:1},{text:"测试02",value:2,rank:2},{text:"测试03",value:3,rank:3}] this.data.sort((a, b) => { return a.rank > b.rank ? 1 : -1; 排序 结果: this.data=[{text:"测试03",value:3,rank:3},{text:"测试02",
需求:List集合按照多个 字段 进行 排序 首先得让 排序 的实体类实现Comparable类并且重写它的compareTo方法,在compareTo中你可以自定义 排序 的规则。如果前者大于后者,则返回1,若果相等则返回0,若果前者小于后者,则返回-1;String字符串比较的时候也会经常用到这个compareTo方法,查看String类,可以看到它也实现了Comparable类。 新建一个User类:按照id升序,age降序来 排序 。 package com.entity; public class User imp
可以使用 JavaScript 中的 `sort()` 方法来对 数组 进行 排序 。 假设你有一个 数组 `arr`,其中每个元素都是一个对象,对象有一个属性 `field`,表示需要按照该 字段 进行 排序 。你可以这样 排序 : ``` javascript arr.sort((a, b) => { if (a.field < b.field) { return -1; } else if (a.field > b.field) { return 1; } else { return 0; 这段代码中,我们使用 `sort()` 方法对 数组 进行 排序 ,传入一个回调函数,该函数接收两个参数 `a` 和 `b`,分别表示 数组 中的两个元素。在回调函数中,我们比较这两个元素的 `field` 属性,如果 `a.field` 小于 `b.field`,则返回 -1,表示 `a` 应该排在 `b` 的前面;如果 `a.field` 大于 `b.field`,则返回 1,表示 `a` 应该排在 `b` 的后面;如果 `a.field` 等于 `b.field`,则返回 0,表示两个元素的顺序不变。 如果你需要按照 字段 进行降序 排序 ,只需要将比较逻辑稍微修改一下即可: ``` javascript arr.sort((a, b) => { if (a.field < b.field) { return 1; } else if (a.field > b.field) { return -1; } else { return 0; 这样就可以按照某个 字段 数组 进行 排序 了。