JavaScript指定字段排序方法sortFun函數
在前端開發(fā)中,經常需要對數組進行排序操作。在 JavaScript 中,數組的排序方法是sort()
,但是它并不支持根據指定的字段進行排序。因此,我們需要自己實現一個根據指定字段進行排序的方法。本文將介紹一個基于 JavaScript 的數組排序方法sortFun
,它可以根據指定的字段進行排序,并支持升序和降序兩種排序方式。
1. 排序方法sortFun
sortFun
是一個 JavaScript 函數,可以通過傳遞三個參數來對數組進行排序。具體的函數定義如下:
/** * @method sortFun * @param arr 要傳遞的排序對象數組 * @param name 要傳遞的排序字段 * @param type 要傳遞的排序類型 默認升序:order 降序:desc */ const sortFun = (arr, name, type) => { const compare = (prop) => { return function(obj1, obj2) { let val1 = obj1[prop]; let val2 = obj2[prop]; if (val1 < val2) { return -1; } else if (val1 > val2) { return 1; } else { return 0; } } } if (type == 'desc') { return arr.sort(compare(name)); } else { return arr.sort(compare(name)).reverse(); } }
其中,arr
是要排序的數組,name
是要排序的字段名,type
是排序類型,可以是'order'
(升序,默認值)或'desc'
(降序)。函數內部使用了compare
函數來定義排序規(guī)則,根據指定的字段名對數組中的元素進行排序。
2. 排序規(guī)則compare
compare
函數是sortFun
函數內部定義的,它接受一個參數prop
,表示要根據哪個字段進行排序。具體的函數定義如下:
const compare = (prop) => { return function(obj1, obj2) { let val1 = obj1[prop]; let val2 = obj2[prop]; if (val1 < val2) { return -1; } else if (val1 > val2) { return 1; } else { return 0; } } }
其中,obj1
和obj2
分別表示要比較的兩個對象,prop
表示要根據哪個字段進行排序。函數內部通過訪問對象的屬性來獲取相應的值,然后進行比較。如果第一個對象的屬性值小于第二個對象的屬性值,則返回 -1;如果第一個對象的屬性值大于第二個對象的屬性值,則返回 1;如果兩個對象的屬性值相等,則返回 0。
3. 排序示例
使用sortFun
函數進行排序非常簡單,只需要傳遞要排序的數組、要排序的字段名和排序類型即可。下面是一些示例代碼:
const arr = [ { name: 'Tom', age: 20 }, { name: 'Jerry', age: 18 }, { name: 'John', age: 25 } ]; // 按 name 字段升序排序 const sortedArr1 = sortFun(arr, 'name', 'order'); console.log(sortedArr1); // [{ name: 'Jerry', age: 18 }, { name: 'John', age: 25 }, { name: 'Tom', age: 20 }] // 按 age 字段升序排序 const sortedArr2 = sortFun(arr, 'age', 'order'); console.log(sortedArr2); // [{ name: 'Jerry', age: 18 }, { name: 'Tom', age: 20 }, { name: 'John', age: 25 }] // 按 name 字段降序排序 const sortedArr3 = sortFun(arr, 'name', 'desc'); console.log(sortedArr3); // [{ name: 'Tom', age: 20 }, { name: 'John', age: 25 }, { name: 'Jerry', age: 18 }]
從上面的示例可以看出,`sortFun` 函數非常方便易用,可以根據不同的字段和排序類型對數組進行排序。
4. 總結
本文介紹了一個 JavaScript 數組排序方法 `sortFun`,它可以根據指定的字段進行排序,并支持升序和降序兩種排序方式。具體的實現原理是定義一個 `compare` 函數,根據指定的字段對數組中的元素進行比較,然后使用 JavaScript 數組對象的 `sort()` 和 `reverse()` 方法對數組進行排序和反轉操作。 希望本文能夠幫助大家更好地理解 JavaScript 數組的排序操作。
到此這篇關于JavaScript指定字段排序方法sortFun函數的文章就介紹到這了,更多相關JS sortFun函數內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!