Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当数据不按顺序排列时,如何对数组中的json数据进行排序?_Javascript_Jquery_Html_Css_Json - Fatal编程技术网

Javascript 当数据不按顺序排列时,如何对数组中的json数据进行排序?

Javascript 当数据不按顺序排列时,如何对数组中的json数据进行排序?,javascript,jquery,html,css,json,Javascript,Jquery,Html,Css,Json,var数据=[ { cid:“59eb15be”, parentCid:“, 吕:1,, 编号:“2”, 主题:“标题2” }, { cid:“d7d851ef”, parentCid:“, 吕:1,, 编号:“4”, 主题:“标题4” }, { cid:“bd01cc50”, parentCid:“ae35e67d”, 吕:2,, 编号:“1.1”, 主题:“标题1.1” }, { cid:“2d8bd8b0”, parentCid:“, 吕:1,, 编号:“3”, 主题:“标题3”

var数据=[
{
cid:“59eb15be”,
parentCid:“,
吕:1,,
编号:“2”,
主题:“标题2”
},
{
cid:“d7d851ef”,
parentCid:“,
吕:1,,
编号:“4”,
主题:“标题4”
},    
{
cid:“bd01cc50”,
parentCid:“ae35e67d”,
吕:2,,
编号:“1.1”,
主题:“标题1.1”
},
{
cid:“2d8bd8b0”,
parentCid:“,
吕:1,,
编号:“3”,
主题:“标题3”
},
{
cid:“7f66a92d”,
parentCid:“ae35e67d”,
吕:2,,
编号:“1.2”,
主题:“标题1.2”
},
{
cid:“ae35e67d”,
parentCid:“,
吕:1,,
编号:“1”,
主题:“标题1”
},
{
cid:“e7c2dbcc”,
parentCid:“ae35e67d”,
吕:2,,
编号:“1.3”,
主题:“标题1.3”
},
{
cid:“cc784c42”,
parentCid:“ae35e67d”,
吕:2,,
编号:“1.4”,
主题:“标题1.4”
}
];
var chapterListDiv=document.getElementById(“listSummary”);
var store=document.createDocumentFragment()//我们用它来存储临时孤儿

对于(var i=0;i只需在处理数据之前对其进行排序

data.sort(function(a, b) {
    if ((a.lv | a.level) > (b.lv | b.level))
        return 1;
    else if ((a.lv | a.level) < (b.lv | b.level))
        return -1;
    else {
        if (Number(a.number) > Number(b.number))
            return 1;
        else 
            return -1;
    }
});
data.sort(函数(a,b){
如果((a.lv | a.level)>(b.lv | b.level))
返回1;
否则,如果((a.lv | a.level)<(b.lv | b.level))
返回-1;
否则{
如果(编号(a.编号)>编号(b.编号))
返回1;
其他的
返回-1;
}
});

|a.level
是因为您的一个数据点具有
level
而不是
lv
要按数字对数据进行层次排序,您只需使用排序功能:

data.sort(function(a, b) {
    return a.number > b.number
});
如果保持此元素编号样式,只需按此属性排序即可


我建议阅读

删除父元素。然后通过将字符串编号转换为浮点数并相互减去,对第二级元素进行排序

var data_sorted = data.filter(function(value, index){
    return value.parentCid != "";
}).sort(function(value1, value2){
    return parseFloat(value1.number) - parseFloat(value2.number);
});

使用
Array.filter()
Array.sort()
Array.forEach()
的解决方案:

var数据=[{cid:“59eb15be”,parentCid:”,lv:1,编号:“2”,主题:“Title 2”},{cid:“d7d851ef”,parentCid:”,lv:1,编号:“4”,主题:“Title4”},{cid:“bd01cc50”,parentCid:“ae35e67d”,lv:2,编号:“1.1”,主题:“Title1.1”},{cid:“2d8bd8b0”,parentCid:“1,编号:“3”,主题:“Title3”{,parentCid:“ae35e67d”,lv:2,编号:“1.2”,主题:“Title1.2”},{cid:“ae35e67d”,parentCid:“1”,lv:1,编号:“1”,主题:“Title1”},{cid:“e7c2dbcc”,parentCid:“ae35e67d”,lv:2,编号:“1.3”,主题:“Title1.3”},{cid:“cc784c42”,parentCid:“ae35e67d”,lv:2,编号:“1.4”,主题:“Title1.4”};
//这是树生成函数的位置
功能打印(a,l){
var ll=l;
而(ll--)文件。写(“”);
文件写入('计算级别:'+l+'');
Object.keys(a).forEach(函数(i){
写(i+':'+a[i]+');
});
document.write(“\n”)
}
函数getChildren(父级,级别){
数据过滤器(功能(a){
返回a.parentCid==parent;
}).排序(功能(a、b){
返回a.number.localeCompare(b.number);
}).forEach(函数(a){
印刷品(a级);
getChildren(a.cid,级别+1);
});
}
文件。写(“”);
getChildren(“”,0);

文件。写入(“”)
所以基本上你想按数字和级别对数据进行排序?只是按数字吗?例如,1.4自然在2后面,而在1前面。你可以将属性
number
的值更改为无点的数字,并将
number
与父级
number
组合起来。我想按1.1>1.2>1.3>1.4的方式对数据进行排序,而不是按数字,但按它们在数据中的位置,因为数字有时可能是单词