自定义排序功能中的Javascript访问参数 [英] Javascript access parameter inside custom sort function

查看:34
本文介绍了自定义排序功能中的Javascript访问参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我定义了一个自定义排序功能&

I have a custom sort function defined & call it as below;

myArr.sort(this.sortArrayBy, key);

sortArrayBy: function(a, b) {

    let param = this.get('sortKey'); //How do I get this value here ? cannot pass it as param OR even access via 'this'

    if (a.param < b.param)
        return -1;
    if (a.param > b.param)
        return 1;
    return 0;
},

我想在该函数内传递其他参数。我如何访问该类属性?

I want to pass an additional param inside that function. How do I get access to that class attribute ?

PS:此代码在我的Ember控制器类内部

P.S: This code is inside my Ember controller class

推荐答案

您不能使此 .sort()接受额外的参数。一种解决方法是创建一个包装自定义定义的排序函数的函数,该函数确实采用附加参数。

You can't make this .sort() take an extra parameter. A workaround is to create a function which wraps a custom defined sort function which does take the additional parameter.

您可以定义自己的带附加参数的排序函数:

You can define your own sort function which takes an extra parameter:

sortArrayBy: function(a, b, param) {
    // ... sort logic here ...
    return 0;
}

然后,在您叫 myArr.sort的那一点,您可以为此函数定义一个仅包含预期两个参数的包装器:

Then, at the point you call myArr.sort, you can define a wrapper to this function which only takes the expected two parameters:

var self = this;
var sortFunc = function(a, b) {
    return self.sortArrayBy(a, b, self.get('sortKey'));  
};
myArr.sort(sortFunc, key);

这篇关于自定义排序功能中的Javascript访问参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆