ts 多屬性排序

2021-08-28 12:39:35 字數 2185 閱讀 1120

現在有乙個學生陣列:

enum *** 

inte***ce student

const students: student = [,,

,]

需要按照年齡(或其他屬性)來排序。

在上上篇筆記裡面,提到了阮一峰的快速排序

var arr = [6,2,5,1,3];

function quicksort(arr:number):number

var pivotindex = math.floor(arr.length/2);

var pivot = arr.splice(pivotindex,1)[0];

var left = as number;

var right = as number;

for(var i =0;i那麼,對於學生陣列的排序,也是基於這個快排的方法。

首先,我們需要給函式簽名新增乙個引數,用來傳遞學生陣列的屬性。

function orderby(arr: titem, selector: (i: titem) => tvalue): titem

(其中用到了泛型的概念)

引數arr代表我們需要傳入的學生陣列,而selector代表學生陣列中具體的某乙個屬性。

接下來這一段就是快速排序的源**:

if (arr.length <= 1) //如果陣列的項小於等於1,直接返回陣列就ok

const pivotindex = math.floor(arr.length / 2);//取中間的索引

const pivot = arr.splice(pivotindex, 1)[0];//取中間的學生

const left = as titem;

const right = as titem;

接下來的這一段,用來做排序的判斷。

for (const i of arr)  else 

}return orderby(left, selector).concat([pivot], orderby(right, selector));

呼叫的方法:

const studentorderbyage = orderby(students, i => i.age);

console.log(studentorderbyage);

原始碼:

function orderby(arr: titem, selector: (i: titem) => tvalue): titem 

const pivotindex = math.floor(arr.length / 2);

const pivot = arr.splice(pivotindex, 1)[0];

const left = as titem;

const right = as titem;

for (const i of arr) else

}return orderby(left, selector).concat([pivot], orderby(right, selector));

}const studentorderbyage = orderby(students, i => i.age);

console.log(studentorderbyage);

js原始碼:

function orderby(arr, selector) 

const pivotindex = math.floor(arr.length / 2);

const pivot = arr.splice(pivotindex, 1)[0];

const left = ;

const right = ;

for (const i of arr) else

}return orderby(left, selector).concat([pivot], orderby(right, selector));

}const studentorderbyage = orderby(students, i => i.age);

console.log(studentorderbyage);

Python實現按物件多屬性排序

多屬性排序 把需要排序的屬性拿出來作為乙個 tuple,主要的放前面,次要的放後面。假如某物件有n個屬性,那麼先按某規則對屬性a進行排序,在屬性a相等的情況下再按某規則對屬性b進行排序,以此類推。終端列印結果如下 按照屬性name進行排序 按照ascii進行排序,本案例中,按照小寫字母的順序進行排序...

Python 使用多屬性來進行排序

python 中list.sort 是列表中非常常用的排序函式,key 引數可以對單個屬性進行排序。但是想要實現類似 sql 中order by id,age 一樣,對多個字段進行排序就不支援了。py2 中 sort 函式還有個 cmp 引數可以傳入乙個方法,可以自定義對多個屬性進行排序,py3 中...

兩表多屬性聯查

一方表 jsonignoreproperties value public class cityentity implements serializable 獲取 城市id public long getid 設定 城市名 public void setcityname string citynam...