按对象属性对javascript数组排序

按对象属性对javascript数组排序,javascript,sorting,Javascript,Sorting,我想按lastName属性对数组排序。数组保持完全相同。代码如下: console.log(clientListArray); //sort clientList by last name var sortedtClientListArray = clientListArray.sort(function(obj1, obj2) { console.log(obj1.lastName); return obj1.lastName - obj2.la

我想按lastName属性对数组排序。数组保持完全相同。代码如下:

console.log(clientListArray);
    //sort clientList by last name
    var sortedtClientListArray = clientListArray.sort(function(obj1, obj2) {
        console.log(obj1.lastName);
        return obj1.lastName - obj2.lastName;
    })
    console.log(sortedtClientListArray);
我的数组的console.log保持不变(跳入第4个元素(索引3)):

为什么数组中对象的顺序不变

它所在的完整方法:

function onClientClick(e) {


    console.log(e.dataItem);
    var clientList = e.sender.dataSource._data;
    console.log(clientList);
    var clientListArray = [];
    for(i=0; i < clientList.length; i++){
        clientListArray.push(clientList[i]);
    }
    console.log(clientListArray);
    //sort clientList by last name
    var sortedtClientListArray = clientListArray.sort(function(obj1, obj2) {
        console.log(obj1.lastName);
        return obj1.lastName - obj2.lastName;
    })
    console.log(sortedtClientListArray);

    for(i=0; i < clientList.length; i++){
        var clientID = clientList[i].oid;
        if(clientID == e.dataItem.oid) {
            theClient = new Client(clientList[i]);
            console.log(i);
            console.log(theClient.name);
            navigateToSingleClient(true, clientList[i], true, clientList, i);
        }
    }


}
函数onClientClick(e){
console.log(例如dataItem);
var clientList=e.sender.dataSource.\u data;
console.log(clientList);
var clientListArray=[];
对于(i=0;i
您的代码中有两个问题

1)
“OneString”-“SecondString”
将返回
NaN
。所以在这种情况下,我可以把它还给你

2)
数组。排序
将给定数组排序到位。它返回排序后的数组

这样说

clientListArray.sort(function(a, b){
    if(a.lastName < b.lastName) return -1;
    if(a.lastName > b.lastName) return 1;
    return 0;
})
clientListArray.sort(函数(a,b){
如果(a.lastNameb.lastName)返回1;
返回0;
})

你能发布数组的内容吗。@Mritunjay我没有这样做吗?数组的console.log?不,我们只能看到一个项的属性。问题已经添加了答案。根据MDN,“sort()方法对数组中的元素进行排序并返回数组。”因此它确实返回数组。但是你说“它不返回数组”。但MDN说它确实返回数组。@Andrewarvey我的错,更新了答案。虽然我不知道为什么要对数组进行排序,然后返回排序后的数组。
clientListArray.sort(function(a, b){
    if(a.lastName < b.lastName) return -1;
    if(a.lastName > b.lastName) return 1;
    return 0;
})