gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 02:34:29 25 4
gpt4 key购买 nike

我有一个像这样的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com