有一个json文件,内容类似为:
{
"c4": [{
"label": "abc1",
"element": efg1,
"root": 1,
"R": -1,
}, {
"label": "abc2-0",
"element":efg12,
"root": 2,
"R": 0
}, {
"label": "abc2-1",
"element":drwe
"root": 2,
"R": 1
}, {
"label": "abc2-2-0",
"element": ssd11,
"root": 2,
"R": 2
}, {
"label": "abc2-2-1",
"element": 77444ww,
"root": 3,
"R": 0
}, {
"label": "abc2-2-2",
"element": wdwd1515,
"root": 3,
"R": 1
}]
}
root:第几个数据,R:是否循环,R=-1不循环,R=0 1 2 3 4等为循环的第几项
如何将其拆分为:
[
[{
"label": "abc1",
"element": efg1,
"root": 1,
"R": -1,
}],
[{
"label": "abc2-0",
"element":efg12,
"root": 2,
"R": 0
}, {
"label": "abc2-1",
"element":drwe
"root": 2,
"R": 1
}, {
"label": "abc2-2-0",
"element": ssd11,
"root": 2,
"R": 2
}],
[{
"label": "abc2-2-1",
"element": 77444ww,
"root": 3,
"R": 0
}, {
"label": "abc2-2-2",
"element": wdwd1515,
"root": 3,
"R": 1
}]
]
目前为止我都是边学边做,所以基础不够扎实,我感觉好像是一维数组转化为二维数组?但是网上查资料,尝试了很久都实现不了。
希望有通用性方法,就是不依赖上面json内容的(root和R的规律不会改变了),因为以上json文件只是示例 。
提供能让我实现效果思路也行。
var list = data.c4;
var res = {};
for(var i = 0; i < list.length; i++){
var item = list[i];
if(item.root in res){
res[item.root].push(item)
}
else{
res[item.root] = [item]
}
}
for(var root in res){
res[root].sort(function (x, y) {
return x.R == y.R?0: (x.R > y.R? 1: -1)
});
}
console.log(res)
这个是json数组呀,直接通过下标访问就可以了。
其实,就是父子关系的层级问题;
1、找一级
2、通过一级找二级
3、通过二级找三级
类推。。
这样即可生成
<script>
var josn={
"c4": [{
"label": "abc1",
"element": 'efg1',
"root": 1,
"R": -1,
}, {
"label": "abc2-0",
"element":'efg12',
"root": 2,
"R": 0
}, {
"label": "abc2-1",
"element":'drwe',
"root": 2,
"R": 1
}, {
"label": "abc2-2-0",
"element": 'ssd11',
"root": 2,
"R": 2
}, {
"label": "abc2-2-1",
"element": '77444ad',
"root": 3,
"R": 0
}, {
"label": "abc2-2-2",
"element": 'wdwd1515',
"root": 3,
"R": 1
}]
}
var no_forarr=[];
var forarr=[];
var newjson=[]
for(var i =0;i<josn.c4.length;i++){
if(josn.c4[i].R==-1){
no_forarr.push(josn.c4[i])
}else{
forarr.push(josn.c4[i])
}
}
newjson.push(no_forarr)
newjson.push(forarr)
console.log(JSON.stringify(newjson))
</script>
结果如下:
[[{"label":"abc1","element":"efg1","root":1,"R":-1}],[{"label":"abc2-0","element":"efg12","root":2,"R":0},{"label":"abc2-1","element":"drwe","root":2,"R":1},{"label":"abc2-2-0","element":"ssd11","root":2,"R":2},{"label":"abc2-2-1","element":"77444ad","root":3,"R":0},{"label":"abc2-2-2","element":"wdwd1515","root":3,"R":1}]]
<html>
</html>
<script>
var jsonstr = '{\n' +
' "c4": [{\n' +
' "label": "abc1",\n' +
' "element": "efg1",\n' +
' "root": 1,\n' +
' "R": -1\n' +
' }, {\n' +
' "label": "abc2-0",\n' +
' "element":"efg12",\n' +
' "root": 2,\n' +
' "R": 0\n' +
' }, {\n' +
' "label": "abc2-1",\n' +
' "element":"drwe",\n' +
' "root": 2,\n' +
' "R": 1\n' +
' }, {\n' +
' "label": "abc2-2-0",\n' +
' "element": "ssd11",\n' +
' "root": 2,\n' +
' "R": 2\n' +
' }, {\n' +
' "label": "abc2-2-1",\n' +
' "element": "77444ww",\n' +
' "root": 3,\n' +
' "R": 0\n' +
' }, {\n' +
' "label": "abc2-2-2",\n' +
' "element": "wdwd1515",\n' +
' "root": 3,\n' +
' "R": 1\n' +
' }]\n' +
'}\n'
jp=JSON.parse(jsonstr)
//先定义一个大数组
outPut = []
for (k in jp.c4) {
//将每组元素组装成数组添加到大数组中
outPut.push([jp.c4[k]])
}
console.log(outPut)
console.log(JSON.stringify(outPut))
</script>