javascript - 变量函数名Javascript

标签 javascript function sorting metaprogramming

我正在对数组进行排序:

myArray.sort(comparators.some_comparator);

我有几个比较器可供选择:

comparators = {

   asc_firstname_comparator : function(o1, o2){
    ...
   }

   desc_firstname_comparator : function(o1, o2){
    ...
   }

   etc...
}

我想编写根据输入数据返回特定比较器的函数。它应该从字符串输入中找出比较器,如下所示:

function chooseComparator(field, order){

  return "comparators."+order+"_"+field+"_comparator";

}

那么是否可以仅将函数名称字符串传递给 sort() 方法,或者我需要以某种方式传递对正确比较器的引用?

最佳答案

使用下标表示法对 javascript 对象进行索引(obj.propobj["prop"] 相同,但后一种方式可以创建属性名称动态):

function chooseComparator(field, order){ 

  return comparators[order+"_"+field+"_comparator"]; 

}

是的,您必须将函数对象传递给 sort() 函数,仅一个名称是不够的

关于javascript - 变量函数名Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2996674/

相关文章:

javascript - 创建文件上传按钮时ckeditor出错

sql - 每行 Postgresql 函数

Javascript - 调用内部函数时刷新参数值

mysql - 带参数的MySQL函数出错

android - 如何在 RealmResults 中按日期排序

javascript - 返回对象数组中具有最大值的键的最简单方法是什么?

javascript - 如何从对象内部获取属性名称以创建新的属性名称?

javascript - 带有 `crossOrigin="匿名 "` can' t 的图像标签从 S3 加载成功

javascript - jQuery 1.9 中 DOM 更改后事件无法触发

javascript - 在 Chrome 中使用 Array.prototype.sort 时数组的奇怪排序