JavaScript 数组排序与动态列

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)

这样可以在参数中包含列的名称

Nik*_*wal 5

使用方括号,如下所示

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)

  • 哇,我是个白痴,非常感谢,有这么好的简单答案真是令人欣慰,我会尽快接受它作为答案 (2认同)