javascript获取函数内嵌套函数的索引

时间:2012-07-09 15:13:05

标签: javascript

我有一个对数组进行排序的函数,我有自定义排序函数。像这样:

function SortTheArray() {

  function SortCriteria1Asc(a, b) { ... }
  function SortCriteria1Dsc(a, b) { ... }
  function SortCriteria2Asc(a, b) { ... }
  function SortCriteria1Asc(a, b) { ... }

  var CustomSort;

  switch (SomeVar) {

     case 1:
       CustomSort = SortCriteria1Asc;
       break;

     case 2:
        CustomSort = SortCriteria1Dsc;
        break;

     case ....
  }

  SomeDataArray.sort(CustomSort);
}

是否可以删除switch语句并说CustomSort函数只是等于第n个嵌套函数?

感谢您的建议。

3 个答案:

答案 0 :(得分:4)

不要给出函数名称,将它们存储在数组中。

var functions = [
  function (a,b) { ... },
  function (a,b) { ... },
  function (a,b) { ... }
];

然后只是:

SomeDataArray.sort(functions[SomeVar]);

...但数字索引的函数标识符听起来不是一个好主意。你可能最好使用一个对象而不是数组并给它们描述性的名称。

答案 1 :(得分:3)

为什么不在由要切换的变量索引的对象中定义内部函数?

function SortTheArray(someVar){

   var sorters = {
       CriteriaA: function(array){ ... };
   };
   return sorters[someVar];
};

答案 2 :(得分:1)

您可以直接在数组中构建函数:

function SortTheArray() {
   var functions = [];
   functions.push(function(a,b) { ... });

然后你可以执行functions[i](a,b)