1

これは非常に単純なことですが、これを解決するのに問題があります。1つのタイプのオブジェクトすべてをリストの一番上に移動するソートを実装しようとしています。たとえば、タスクのリストを並べ替えて、特定の所有者のすべてのタスクがリストの一番上に表示されるようにします。これは私が今持っているものです:

    this.sortByOwner = function(owner) {
        return tasks.sort(function(a, b) {

            var nameA = a.ownerUser.displayName.toLowerCase();     
            var nameB = b.ownerUser.displayName.toLowerCase();

            var displayName = owner.displayName.toLowerCase();

             if (nameA == displayName) //sort string descending
                 return -1; 
             else if (nameA == "")
                 return 1;
             return 0; //default return value (no sorting)
        });
    };

しかし、これは正しく機能しません。それらはタスクをグループ化しているように見えますが、残念ながら、ユーザーのタスクは上部に表示されていません。私が期待するのは、特定の人が所有するタスクが上部に表示されることです。私はここで何が間違っているのですか?

基本的なJSFiddleの例を含む:http://jsfiddle.net/zJwUn/5/

4

2 に答える 2

4

がの場合は処理しませんでしnameBdisplayName。これは私のために働きます:

function sortByOwner(owner) {
    return tasks.sort(function(a, b){
        var nameA=a.displayName.toLowerCase(), nameB=b.displayName.toLowerCase();
        var displayName = owner.displayName.toLowerCase();
        if (nameA == displayName) //sort string descending
            return -1;
        if (nameA == "")
            return 1;
        if (nameB == displayName) //sort string descending
            return 1;
        if (nameB == "")
            return -1;
        return 0; //default return value (no sorting)
    })
}
于 2012-09-21T18:46:49.680 に答える
2

nameBが所有者である場合、少なくとも1つのチェックが欠落しています。

これがあなたのフィドルからの修正バージョンです

function sortByOwner(owner) {
    return tasks.sort(function (a, b) {
        var nameA = a.displayName.toLowerCase(),
            nameB = b.displayName.toLowerCase();
        var displayName = owner.displayName.toLowerCase();

        if (nameA === nameB) return 0;

        if (nameA == displayName) //sort string descending
            return -1;
        if (nameB == displayName) 
            return 1;

        // at this point neither A or B are the owner
        if (nameA == "") return 1;
        if (nameB == "") return -1;

        return 0 //default return value (no sorting)
    })
}
于 2012-09-21T18:48:08.607 に答える