在網(wǎng)頁(yè)開發(fā)中,常常需要對(duì)數(shù)據(jù)進(jìn)行排序,而Vue框架提供了方便的排序功能。Vue的排序可以按升序、降序、多字段排序等。排序可以在數(shù)據(jù)綁定之前或之后進(jìn)行。
升序和降序是最基本的排序方式。Vue對(duì)數(shù)組的排序需要使用JavaScript的sort()方法來(lái)實(shí)現(xiàn),該方法會(huì)改變?cè)瓟?shù)組,因此要在副本上進(jìn)行排序。下面是按升序排序的代碼示例:
const sortedArr = arr.slice().sort((a, b) =>a - b);
而降序則可以通過(guò)交換a、b位置得到:
const sortedArr = arr.slice().sort((a, b) =>b - a);
如果需要按多個(gè)字段排序,需要使用JavaScript的數(shù)組排序方法sort()中的比較函數(shù)。比較函數(shù)需要按照需要定義,比如下面的代碼用于首先按照age升序排列,如果age相同則按name升序排列:
function compare(a, b) { if (a.age< b.age) { return -1; } else if (a.age >b.age) { return 1; } else { // age相同時(shí)按name升序排列 if (a.name< b.name) { return -1; } else if (a.name >b.name) { return 1; } else { return 0; } } } const sortedArr = arr.slice().sort(compare);
在Vue的模板中,可以使用filter語(yǔ)法對(duì)數(shù)組進(jìn)行排序。比如將students按照age升序排列:
其中的orderBy就是Vue內(nèi)置的過(guò)濾器,排序方式默認(rèn)為升序。如果需要降序排列,則可以指定參數(shù)'reverse':
Vue的orderBy過(guò)濾器還支持多字段排序。比如按照age升序、name降序排列:
其中'age'和'name'表示按照這兩個(gè)字段排序,'-1'表示對(duì)'name'進(jìn)行降序排列。同樣的,如果需要給'age'進(jìn)行降序排列,只需將'-1'放在'age'前面即可。
Vue的排序功能十分方便,使用起來(lái)也非常靈活,可以滿足各種排序需求。