可以减少JavaScript中排序助手函数的代码行吗?

可以减少JavaScript中排序助手函数的代码行吗?,javascript,arrays,Javascript,Arrays,我正在构建一个需要排序/筛选功能的功能。 使用helper函数定义自己的排序和筛选方法很简单。假设一个GitHub案例(并且假设下面的代码都是可运行的) 我有很多(可能太多)像这样的简单助手函数,实际上,它们的结构非常相似。除了使用开关,是否可以找到缩小代码库的方法 顺便说一句,如果您认为可以使我的问题描述和标题更一般,欢迎您编辑它。您可以创建一个更通用的比较函数,该函数接受两个额外参数:要比较的属性名称(propName)和排序order function compareRepo (propN

我正在构建一个需要排序/筛选功能的功能。 使用helper函数定义自己的排序和筛选方法很简单。假设一个GitHub案例(并且假设下面的代码都是可运行的)

我有很多(可能太多)像这样的简单助手函数,实际上,它们的结构非常相似。除了使用
开关
,是否可以找到缩小代码库的方法


顺便说一句,如果您认为可以使我的问题描述和标题更一般,欢迎您编辑它。

您可以创建一个更通用的比较函数,该函数接受两个额外参数:要比较的属性名称(
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
…!