簡體   English   中英

自定義排序函數中的Javascript訪問參數

[英]Javascript access parameter inside custom sort function

我定義了一個自定義排序函數,並按如下方式調用它;

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;
},

我想在該函數內傳遞其他參數。 我如何訪問該類屬性?

PS:此代碼在我的Ember控制器類中

您可以在所需的排序鍵上使用閉包。

myArr.sort(this.sortArrayBy(key));

sortArrayBy: function (param) {
    return function(a, b) {
        if (a[param] < b[param])
            return -1;
        if (a[param] > b[param])
            return 1;
        return 0;
    };
},

您不能使此.sort()帶有額外的參數。 一種解決方法是創建一個包裝有自定義定義的排序函數的函數,該函數采用附加參數。


您可以定義自己的帶附加參數的排序函數:

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

然后,在調用myArr.sort的點上,您可以為此函數定義一個包裝器,該包裝器僅采用預期的兩個參數:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM