The*_*age 4 javascript arrays sorting function object
我有一些使用 JavaScript 数组排序的代码可以工作,但似乎效率很低。
出于示例目的,我定义了一个对象数组,如下所示
dummyData = [];
dummyData.push({ col01:"aa", col02:"ac", col03:"ab" });
dummyData.push({ col01:"ab", col02:"ab", col03:"ac" });
dummyData.push({ col01:"ac", col02:"aa", col03:"aa" });
Run Code Online (Sandbox Code Playgroud)
然后我可以使用这样的函数对 col01 进行排序
function f_sort_col01(dataArg) {
dataArg.sort(function(res01, res02) {
var arg01 = res01.col01.toLowerCase();
var arg02 = res02.col01.toLowerCase();
if(arg01 < arg02) { return -1; }
if(arg01 > arg02) { return 1; }
return 0;
});
return dataArg;
}
Run Code Online (Sandbox Code Playgroud)
这工作得很好,但问题是当我需要对不同的列进行排序时,我必须创建一个像这样的全新函数
function f_sort_col02(dataArg) {
dataArg.sort(function(res01, res02) {
var arg01 = res01.col02.toLowerCase();
var arg02 = res02.col02.toLowerCase();
if(arg01 < arg02) { return -1; }
if(arg01 > arg02) { return 1; }
return 0;
});
return dataArg;
}
Run Code Online (Sandbox Code Playgroud)
这几乎是同一件事,只是在不同的列上。我想知道是否有可能做一些类似的事情
function f_sort(dataArg, colName) {
dataArg.sort(function(res01, res02) {
var arg01 = res01.colName.toLowerCase();
var arg02 = res02.colName.toLowerCase();
if(arg01 < arg02) { return -1; }
if(arg01 > arg02) { return 1; }
return 0;
});
return dataArg;
}
Run Code Online (Sandbox Code Playgroud)
这样可以在参数中包含列的名称
使用方括号,如下所示
function f_sort(dataArg, colName) {
dataArg.sort(function(res01, res02) {
var arg01 = res01[colName].toLowerCase();
var arg02 = res02[colName].toLowerCase();
if(arg01 < arg02) { return -1; }
if(arg01 > arg02) { return 1; }
return 0;
});
return dataArg;
}
Run Code Online (Sandbox Code Playgroud)