我正在对数组进行排序:
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.prop
与 obj["prop"]
相同,但后一种方式可以创建属性名称动态):
function chooseComparator(field, order){
return comparators[order+"_"+field+"_comparator"];
}
是的,您必须将函数对象传递给 sort()
函数,仅一个名称是不够的
关于javascript - 变量函数名Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2996674/