首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按对象属性对javascript数组排序

按对象属性对javascript数组排序
EN

Stack Overflow用户
提问于 2014-08-20 04:18:49
回答 1查看 1.1K关注 0票数 0

我想按照lastName属性对数组进行排序。数组保持不变。以下是代码:

代码语言:javascript
复制
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)):

代码语言:javascript
复制
0: ct.extend.init
1: ct.extend.init
2: ct.extend.init
3: ct.extend.init
_events: Object
dwelling: "RH07"
firstName: "Alan"
lastName: "Mosby"
letter: "M"
nhi: ""
oid: "2143.10"
parent: function (){return i}
uid: "79fbbf40-5545-4cdc-bc2b-088bf56affc6"
__proto__: r
4: ct.extend.init
5: ct.extend.init
6: ct.extend.init
7: ct.extend.init
length: 8
__proto__: Array[0]

为什么数组中对象的顺序没有改变?

它所包含的完整方法:

代码语言:javascript
复制
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);
        }
    }


}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-20 04:25:45

代码中有两个问题。

1) "OneString"-"SecondString"将返回NaN。所以在这种情况下还能回来。

2) Array.sort对给定的数组进行排序。它返回排序的数组。

像这样说

代码语言:javascript
复制
clientListArray.sort(function(a, b){
    if(a.lastName < b.lastName) return -1;
    if(a.lastName > b.lastName) return 1;
    return 0;
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25396654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档