2017-06-12 36 views
0

我有以下Vue方法,我需要添加JS .sort()以便按字母順序排序輸出。我第一次知道JS落後的學習框架,並正在努力理解我需要如何使這項工作JS-明智:如何將JS .sort添加到Vue方法

filteredByCat (cat) { 
    return this.businesses.filter((element) => { 
    return element.cat === cat.name 
    }) 
}, 

不知怎的,我需要的是這樣的:

filteredByCat (cat) { 
    return this.businesses.filter((element) => { 
    return (element.cat === cat.name).sort() 
    }) 
}, 
+1

您應該瞭解Javascript值,函數和數組的基礎知識。 – SLaks

+0

@SLaks我同意,在此工作。框架/庫更有意義,我需要知道他們的工作,所以我學到了一點點落後。 – Auzy

回答

1

你需要排序的過濾陣列:

filteredByCat (cat) { 
    return this.businesses.filter((element) => { 
    return (element.cat === cat.name); 
    }).sort(); 
}, 

MDN Documentation for Array.prototype.sort()

默認的排序順序是根據字符串的Unicode代碼點。

這意味着上面的例子將在過濾businesses陣列按字母和升序字符串進行排序。

如果需要通過一個屬性來排序對象的數組(比方說name),則需要提供回調函數作爲其提供排序邏輯的參數:

filteredByCat (cat) { 
    return this.businesses.filter((element) => { 
    return (element.cat === cat.name); 
    }).sort((a, b) => { // based off an example in the MDN Documentation for .sort() 
    var nameA = a.name.toUpperCase(); 
    var nameB = b.name.toUpperCase(); 
    if (nameA < nameB) { 
     return -1; 
    } else if (nameA > nameB) { 
     return 1; 
    } else { 
     return 0; 
    } 
    }); 
}, 
0

排序函數需要一個回調像

.sort(function(a,b) { return a-b }) 
+0

不,回調參數是可選的。默認情況下,'sort()'方法按照字母順序和升序順序將值排序爲字符串。在控制檯中嘗試「[」B「,」A「,」D「,」C「]。sort() – thanksd

+0

哦,不知道這一點。謝謝 – John