簡體   English   中英

JavaScript比較器函數,用於不調用排序

[英]JavaScript Comparator Function for Sorting Not Being Called

我正在嘗試為包含對象(鍵控)的數組獲取以下JavaScript比較器函數,但以下代碼不起作用。

我已經在網上嘗試了許多示例(根據我的需要進行更改),但到目前為止沒有任何好處。

參見下面的代碼。 我究竟做錯了什么?

感謝您的時間。

(作為一個參考,下面的teContainer對象通過AJAX調用來填充)

var teContainer = {};
for (var i = 0; i < result.d.length; i++) {
    var key = result.d[i].PersonId;
    teContainer[key] = {
        displayText: result.d[i].DLSPersonId + ' ' + result.d[i].PersonLastName + ', ' + result.d[i].PersonFirstName.substring(0, 5),
        tEFirstName: result.d[i].PersonFirstName,
        tELastName: result.d[i].PersonLastName,
        tEID: result.d[i].PersonId,
        orgID: result.d[i].DLS_OrgId
    };
}
function tECompare(a, b) {
    if (a.tELastName < b.tELastName)
        return -1;
    if (a.tELastName > b.tELastName)
        return 1;
    return 0;
}
teContainer.sort(tECompare);

編輯 :感謝答案; 這是有效的更正代碼:

var teContainer = [];
for (var i = 0; i < result.d.length; i++) {
    teContainer.push = ({
        displayText: result.d[i].DLSPersonId + ' ' + result.d[i].PersonLastName + ', ' + result.d[i].PersonFirstName.substring(0, 5),
        tEFirstName: result.d[i].PersonFirstName,
        tELastName: result.d[i].PersonLastName,
        tEID: result.d[i].PersonId,
        orgID: result.d[i].DLS_OrgId
    });
}
function tECompare(a, b) {
    if (a.tELastName < b.tELastName)
        return -1;
    if (a.tELastName > b.tELastName)
        return 1;
    return 0;
}
teContainer.sort(tECompare);

它沒有運行,因為sort不是對象的方法。 teContainer是一個對象,而不是數組。 您可能會收到以下錯誤:

Calling undefined method "sort"

一般來說,您的代碼是好的。 關於排序的主要問題是,“ sort”功能僅適用於Array,不適用於Object。

假設Ajax結果的格式為:

var result = {
  d: [
    {
      PersonId: 1,
      DLSPersonId: 1,
      PersonLastName: "Doe",
      PersonFirstName: "John",
      DLS_OrgId: 1
    },
    {
      PersonId: 2,
      DLSPersonId: 2,
      PersonLastName: "Smith",
      PersonFirstName: "Alex",
      DLS_OrgId: 2
    },
    {
      PersonId: 3,
      DLSPersonId: 3,
      PersonLastName: "Vera",
      PersonFirstName: "Luis",
      DLS_OrgId: 3
    }
  ]
};

這是一個演示

*在演示中,我沒有更改teContainer對象,以防您按需使用它。

暫無
暫無

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

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