javascript - 对json转XML后的结果进行排序

标签 javascript arrays json xml

我有一个像这样的 json 文件:

"files": {
    "audio": {
        "number1": {
            "enabled": false,
            "priority": 5,
        },
        "number2": {
            "enabled": false,
            "priority": 1,
        },
        "number3": {
            "enabled": false,
            "priority": 2,
        }
    }
}

我使用一些函数将这个 json 文件转换为 xml,还有这个函数:

function extractFile(data){

    // adding for loop to check priority number?

    var datas = [];
    var element = data.files.audio;

    datas.push({
        name : 'Num1',
        enabled : element. number1.enabled? "true":"false"
    });
    datas.push({
        name : 'Num2',
        enabled : element. number2.enabled? "true":"false"
    });
    datas.push({
        name : 'Num3',
        enabled : element. number3.enabled? "true":"false"
    });

    return datas;
}

输出是:

   <file name="Num1" enabled="false"/>
   <file name="Num2" enabled="false"/>
   <file name="Num3" enabled="false”/>

如何根据 json 中的优先级编号对它们进行排序?

输出需要像这样:

   <file name="Num2" enabled="false"/>
   <file name="Num3" enabled="false"/>
   <file name="Num1" enabled="false”/>

最佳答案

您的代码中需要一个循环,可以按顺序遍历 data.files.audio。看起来这是一个对象而不是数组所以试试 Iterate through object properties创建一个数组。

然后您需要使用 Sort array of objects by string property value in JavaScript 的答案对 data.files.audio 数组进行排序.

编辑

function extractFiles(data) {
    var elements = [];
    var files = [];

    // create an array of your source data objects
    for (var property in data.files.audio) {
        if (data.files.audio.hasOwnProperty(property)) {
            var p = data.files.audio[property];
            p.name = property.toString();
            elements.push(p);
        }
    }

    // create function to sort object array by priority
    function compareFiles(a, b) {
        if (a.priority < b.priority) return -1;
        if (a.priority > b.priority) return 1;
        return 0;
    }

    // create data for xml from sorted object array
    for (var e in elements.sort(compareFiles)) {
        files.push({
            name: elements[e].name,
            enabled: elements[e].enabled ? "true" : "false"
        });
    }

    return files;
}

关于javascript - 对json转XML后的结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32084487/

相关文章:

javascript - 如何通过对元素的子属性设置过滤器来获取元素

c - 如何找到数组的大小(从指向第一个元素数组的指针)?

javascript - 比较 JavaScript 中的对象

java - 如何正确嵌套循环

javascript - 如何在javascript中根据多个分隔符将字符串拆分为多个数组

javascript - Web服务错误捕获(Jquery + asp.net Web服务)

javascript - 将键值对转换为所需对象的数组

sql - AWS Athena 使用 AND 条件查询 JSON 数组

javascript - 简单功能在 Chrome 57.0.2977.98(64 位)中不起作用

javascript - 为什么我在使用 `undefined` 时得到 `document.getElementsByClassName(...).value` ?