本文介绍如何在JavaScript中实现按指定字段排序的sortFun函数。通过定义内部compare函数比较对象属性,结合原生sort与reverse方法,支持升序(order)和降序(desc)两种模式,提供清晰代码示例与使用场景。
在前端开发场景下,数组排序是常见需求。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 以定义排序逻辑,依据指定字段名对数组元素执行排序。
2. 排序规则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 函数相关内容,请查阅本站往期文章或继续浏览后续相关文章,感谢大家的支持!