迭代json对象数组,并使用ProtypeJS根据关键字对其进行排序

Iterate json object array and sort it based on key with Protoype JS

本文关键字:关键字 排序 ProtypeJS 数组 对象 json 迭代      更新时间:2023-09-26

如果这个问题重复,我很抱歉,但我必须问它。我使用原型JS从文件中读取JSON数据。JSON数据如下所示;

{
    "metaData": {
        "date": "2014-10-06"
    },
    "listOf": [
        {
            "fname": "bill",
            "id": 23
        },
        {
            "fname": "tom",
            "id": 35
        },
        {
            "fname": "jerry",
            "id": 12
        },
        {
            "fname": "batman",
            "id": 68
        },
        {
            "fname": "superman",
            "id": 55
        },
        {
            "fname": "sp-m/super",
            "id": 55
        },
    ]
}

在我的代码中,我需要访问"listOf"键/数组,然后我想循环遍历每个元素,并根据"fname"键对这些元素进行排序。我通过ajax请求读取这些数据。下面是代码;

new Ajax.Request('/file.json', {
                    method:'get',
                    onSuccess: function(transport){
                        var json = transport.responseText.evalJSON();
                        console.log(json);
                    }
                });

现在VAR JSON包含必需的数据,但我不知道如何访问"listOf"数据并对其进行迭代。

我试着使用。每个函数都是这样的;

json.list.each(alert);

但它只打印"对象object"。

请帮我解决这个问题。

p.S:请使用原型JS作为答案,但不使用Jquery。

您可以使用其名称访问listOf集合属性:

json.listOf

因此,如果您想对数组进行排序,可以尝试使用.sort() javascript方法:

json.listOf.sort(function(a, b) {
    if (a.fname > b.fname) {
        return 1;
    } else if (a.fname < b.fname) {
        return -1;
    }
    return 0;
});
// At this stage json.listOf will contain the sorted in-place array using the `fname` property

这是一个CCD_ 3,说明了它的作用。