按属性对嵌套数组进行排序

时间:2014-01-24 04:31:00

标签: javascript sorting express

我有这个数组,我想知道我是否可以单独使用属性comments.countlikes.count对其进行排序。

例如,我可以使用likes.count参数或comments.count参数调用函数。

{
    "attribution": null,
    "tags": [

    ],
    "type": "",
    "location": null,
    "comments": {
        "count": 2,
        "data": [
            {
                "created_time": "1385670850",
                "text": "Holy shit",
                "from": {
                    "username": "someone",
                    "profile_picture": "http://url.com/profiles/profile_191120775_75sq_1365830292.jpg",
                    "id": "191120775"
                },
                "id": "599372997379438683"
            },
            {
                "created_time": "1385680581",
                "text": "",
                "from": {
                    "username": "someone",
                    "profile_picture": "http://url.com/profiles/profile_1523167_75sq_1389544912.jpg",
                    "id": "1523167"
                },
                "id": "599454624038205610"
            }
        ]
    },
    "likes": {
        "count": 6,
        "data": [
            {
                "username": "someone",
                "profile_picture": "http://url.com/profiles/profile_2169761_75sq_1389075971.jpg",
                "id": "2169761"
            },
            {
                "username": "rashmityagi",
                "profile_picture": "http://url.com/profiles/profile_393770264_75sq_1388911033.jpg",
                "id": "393770264"
            },
            {
                "username": "tylerferweda",
                "profile_picture": "http://url.com/profiles/profile_191120775_75sq_1365830292.jpg",
                "id": "191120775"
            },
            {
                "username": "cbolts",
                "profile_picture": "http://url.com/profiles/profile_1523167_75sq_1389544912.jpg",
                "id": "1523167"
            }
        ]
    }
},
{
    "attribution": null,
    "tags": [

    ],
    "type": "",
    "location": null,
    "comments": {
        "count": 10,
        "data": [
            {
                "created_time": "1385670850",
                "text": "Holy shit",
                "from": {
                    "username": "someone",
                    "profile_picture": "http://url.com/profiles/profile_191120775_75sq_1365830292.jpg",
                    "id": "191120775"
                },
                "id": "599372997379438683"
            },
            {
                "created_time": "1385680581",
                "text": "",
                "from": {
                    "username": "someone",
                    "profile_picture": "http://url.com/profiles/profile_1523167_75sq_1389544912.jpg",
                    "id": "1523167"
                },
                "id": "599454624038205610"
            }
        ]
    },
    "likes": {
        "count": 20,
        "data": [
            {
                "username": "someone",
                "profile_picture": "http://url.com/profiles/profile_2169761_75sq_1389075971.jpg",
                "id": "2169761"
            },
            {
                "username": "rashmityagi",
                "profile_picture": "http://url.com/profiles/profile_393770264_75sq_1388911033.jpg",
                "id": "393770264"
            },
            {
                "username": "tylerferweda",
                "profile_picture": "http://url.com/profiles/profile_191120775_75sq_1365830292.jpg",
                "id": "191120775"
            },
            {
                "username": "cbolts",
                "profile_picture": "http://url.com/profiles/profile_1523167_75sq_1389544912.jpg",
                "id": "1523167"
            }
        ]
    }
},

2 个答案:

答案 0 :(得分:0)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

json_array.sort(function(a, b) {
    if(a.comments.count < b.comments.count) {
        return -1;
    }
    if(a.comments.count > b.comments.count) {
        return 1;
    }
    return 0;
});

您也可以修改likes.count

答案 1 :(得分:0)

Underscore.js为处理数组和对象提供了很好的实用工具。对于您的情况,您可以使用_.sortBy(...)有关详细信息,请参阅http://underscorejs.org/#sortBy。对于简单的对象属性,只需指定对象属性名称als last参数。