原数据是这样
想生成这样的格式的数据
有什么好的想法?
原数据是动态的,每个数组里的字符不固定,后面一个是前面的子元素
这种最好要后端实现,前端太麻烦了,我之前写过,只是我现在没那么多时间去回复
好吧
我js功底不咋地,我感觉看明白思路,可以js直接拼接出来这个newData。前提是你的原数据要有一定的规律才行。比如,children上边第一个name的值一定是data中偶数索引?而且children下的是不是只能有两个name
不是 都是动态的
@石志凯: 我知道是动态的,我上边意思是说,他们的规律是不是我所说一样。。。。如果连规律都没有,那程序没法实现动态构造出你要的结果。
如果你拿不准,请贴出更多可能的数据,不然没法出答案
让后台生成此数据吧
好吧
你要和后端配合,给他说明数据要以怎样的形式展示,他明白了自然会返给你这个数据
这前台就是后台写的 他知道数据格式
这不是 json格式吗? 自己拼字符串
////////
var datas = [
['2018-10-21','aa', 'c1cc1'],
['2018-10-21','aea', 'c1cc'],
['2018-10-22','aa', 'cc1c'],
['2018-10-22','aea', 'cc1c'],
['2018-10-22','aa', '1c1cc'],
['2018-10-23','ara', '1cc1c'],
['2018-10-23','aat', '1c1cc'],
['2018-10-23','aya', '1ccc'],
['2018-10-23','aua', '11ccc'],
['2018-10-24','aia', '111ccc'],
['2018-10-24','aa', 'c11cc'],
['2018-10-24','aoa', 'c1cc'],
['2018-10-24','aa', 'c1c1c'],
['2018-10-24','aa', 'c1c1c'],
] ;
var temp = {};
for(var i in datas) {
if(temp[datas[i][0]] == undefined) {
temp[datas[i][0]] = {};
}
if(temp[datas[i][0]][datas[i][1]] == undefined) {
temp[datas[i][0]][datas[i][1]] = {};
}
temp[datas[i][0]][datas[i][1]][datas[i][2]] = 0;
}
var newData = [];
for(var i in temp){
var oneData = {
'name': i,
'children':[],
};
for(var j in temp[i]){
var twoData={
'name': j,
'children':[],
}
for(var z in temp[i][j]){
twoData['children'].push({'name':z})
}
oneData['children'].push(twoData)
}
newData.push(oneData);
}
console.log(newData)
捕捉喵喵一个
不行 你把原数据写死了 那个是动态的 不过还是谢谢你