[英]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.