可以减少JavaScript中排序助手函数的代码行吗?
我正在构建一个需要排序/筛选功能的功能。 使用helper函数定义自己的排序和筛选方法很简单。假设一个GitHub案例(并且假设下面的代码都是可运行的) 我有很多(可能太多)像这样的简单助手函数,实际上,它们的结构非常相似。除了使用可以减少JavaScript中排序助手函数的代码行吗?,javascript,arrays,Javascript,Arrays,我正在构建一个需要排序/筛选功能的功能。 使用helper函数定义自己的排序和筛选方法很简单。假设一个GitHub案例(并且假设下面的代码都是可运行的) 我有很多(可能太多)像这样的简单助手函数,实际上,它们的结构非常相似。除了使用开关,是否可以找到缩小代码库的方法 顺便说一句,如果您认为可以使我的问题描述和标题更一般,欢迎您编辑它。您可以创建一个更通用的比较函数,该函数接受两个额外参数:要比较的属性名称(propName)和排序order function compareRepo (propN
开关
,是否可以找到缩小代码库的方法
顺便说一句,如果您认为可以使我的问题描述和标题更一般,欢迎您编辑它。您可以创建一个更通用的比较函数,该函数接受两个额外参数:要比较的属性名称(
propName
)和排序order
function compareRepo (propName, order, a, b) {
// You may want to check validity of inputs, or initialize with proper defaults.
if (['timestamp', 'ownerName'].indexOf(propName) === -1)
throw new Error('invalid property name used')
if (order === 'asc')
return a[propName] > b[propName] ? 1 : 0
else
return a[propName] > b[propName] ? 0 : 1
}
您可以创建一个更通用的比较函数,该函数接受两个额外参数:要比较的属性的名称(
propName
)和排序order
function compareRepo (propName, order, a, b) {
// You may want to check validity of inputs, or initialize with proper defaults.
if (['timestamp', 'ownerName'].indexOf(propName) === -1)
throw new Error('invalid property name used')
if (order === 'asc')
return a[propName] > b[propName] ? 1 : 0
else
return a[propName] > b[propName] ? 0 : 1
}
您可以使用一个绑定键来排序和排序顺序,并返回一个通用排序函数
功能排序系统(键,asc){
asc=asc?1:-1;
返回函数(a,b){
返回a[key]>b[key]?-1*asc:a[key]
样本:
功能排序系统(键,asc){
asc=asc?1:-1;
返回函数(a,b){
返回a[key]>b[key]?-1*asc:a[key]
您可以使用一个绑定键来排序和排序顺序,并返回一个通用排序函数
功能排序系统(键,asc){
asc=asc?1:-1;
返回函数(a,b){
返回a[key]>b[key]?-1*asc:a[key]
样本:
功能排序系统(键,asc){
asc=asc?1:-1;
返回函数(a,b){
返回a[key]>b[key]?-1*asc:a[key]console.log(obj)
比较函数必须返回0
,而不仅仅是1
或0
…!比较函数必须返回0
,而不仅仅是1
或0
…!