1

我正在网站上使用一些代码,我正在尝试按成员 ID 对结果进行排序(我在下面的代码中留下了注释)它似乎没有对结果的顺序进行排序,所以我猜我一定做错了什么。有谁知道问题是什么,也许我可以如何将显示的结果数量限制在 10 左右?

var httpRequestObject = $.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/Wcf/Search.svc/TestSearch",
dataType: "json",
success: function (response) {

    if (response != null && response.d != null) {
        var data = response.d;
        if (data.ServiceOperationOutcome == 10) {

            var profileList = data.MemberList;
            if (profileList != null && profileList.length > 0) {
                for (var i = 0; i < profileList.length; i++) {
                    var profile = profileList[i];

                    // sort var
                    var memberId = (profile.MemberId);


                    if (profile != null) {
                        var clonedTemplate = $('.profile-slider #profile').clone();
                        $(clonedTemplate).removeAttr('style').removeAttr('id');
                        $(clonedTemplate).find('img').attr("src", profile.ThumbnailUrl).attr("alt", profile.Nickname).wrap('<a></a>');
                        $(clonedTemplate).appendTo('.profile-slider');

                        // sort
                        $(memberId).sort();
                    }
                }

            }
        }

        else {
            alert("Error code " + String(data.ServiceOperationOutcome));
        }
    }

    else {
        alert("Null data");
    }
},

error: function (jqXHR, textStatus, errorThrown) {
    alert(errorThrown);
}

});

4

2 回答 2

3

jQuery 没有 sort 方法,但Array.sort()可能是您正在寻找的方法,但 profile 似乎是 array 中的一个对象data.MemberList,因此您可能应该在迭代它之前对其进行排序:

var profileList = data.MemberList; // array
profileList.sort(function(a,b) {
    return a.MemberId.localeCompare(b.MemberId);
});

for (var i = 0; i < profileList.length; i++) {
   // do stuff to each item in the now sorted array
}
于 2013-07-21T20:55:20.467 回答
3

正如 adeneo 所说,您可能想要对成员列表进行排序。

profileList = profileList
  .filter(function (arg) {return arg !== null;}) // remove nulls
  .sort(function(a, b) {
    return a.MemberId < b.MemberId ? -1 : 1; // the < operator works for numbers or strings
  });
于 2013-07-21T21:03:05.103 回答