var arr = [
{
qwe: '/qwe/123/3.mp3'
},
{
qwe: '/qwe/123/2.mp3'
},
{
qwe: '/qwe/123/3.mp3'
},
{
qwe: '/qwe/234/4.mp3'
},
{
qwe: '/asd/123/1.mp3'
}
]
//arr转换为data
var data = [
{
label: 'qwe',
children: [{
label: '123',
children: [{
label: '1.mp3'
},
{
label: '2.mp3'
},
{
label: '3.mp3'
},
{
label: '4.mp3'
}
],
},
{
label: '234',
children: [{
label: '4.mp3'
}],
}
]
},
{
label: 'asd',
children: [{
label: '123',
children: [{
label: '1.mp3'
}],
},
]
}
]
使用字符串的split方法拆分,例如:'/qwe/123/3.mp3'.split('/');
得到:["", "qwe", "123", "3.mp3"]
然后循环向data里面存,判断上面数组的第2项是否已经放进去了,如果没有就添加,如果已经存在就更新
第3项处理方式同第2项
伪代码如下
var data = [];
for (var i = 0; i < arr.length; i++)
{
var paths = arr[i].qwe.split('/');
obj = data;
for (var j = 0; < paths.length; j++)
{
if (obj.children.find(x => x.label == paths[i]) !== undefined)
obj = obj.find(x => x.label == path[i]);
else
{
obj = new { label : paths[i], children = [] };
data.push(obj);
}
}
}