javascript - js数据格式转换问题!求帮忙!
本文介绍了javascript - js数据格式转换问题!求帮忙!的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
求各位帮帮忙,如何转换如下的两种类型的数据格式?
[
{
'name': 'level-1',
'value': 'eve-1',
'id': 'id-1',
'parentId': null
}, {
'name': 'level-2',
'value': 'eve-2',
'id': 'id-2',
'parentId': 'id-1'
}, {
'name': 'level-3',
'value': 'eve-3',
'id': 'id-3',
'parentId': 'id-2'
}, {
'name': 'level-3',
'value': 'eve-4',
'id': 'id-4',
'parentId': 'id-2'
}, {
'name': 'level-2',
'value': 'eve-5',
'id': 'id-5',
'parentId': 'id-1'
}
]
转换为:
[
{
'name': 'level-1',
'value': 'eve-1',
'id': 'id-1',
'children': [
{
'name': 'level-2',
'value': 'eve-2',
'id': 'id-2',
'children': [
{
'name': 'level-3',
'value': 'eve-3',
'id': 'id-3'
}, {
'name': 'level-3',
'value': 'eve-4',
'id': 'id-4'
}
]
}, {
'name': 'level-2',
'value': 'eve-5',
'id': 'id-5'
}
]
}
]
解决方案
let arr = [{
'name': 'level-1',
'value': 'eve-1',
'id': 'id-1',
'parentId': null
}, {
'name': 'level-2',
'value': 'eve-2',
'id': 'id-2',
'parentId': 'id-1'
}, {
'name': 'level-3',
'value': 'eve-3',
'id': 'id-3',
'parentId': 'id-2'
}, {
'name': 'level-3',
'value': 'eve-4',
'id': 'id-4',
'parentId': 'id-2'
}, {
'name': 'level-2',
'value': 'eve-5',
'id': 'id-5',
'parentId': 'id-1'
}];
let result = arr.reduce(function(prev, item) {
let insert = {
name: item.name,
value: item.value,
id: item.id
}
prev[item.parentId] ? prev[item.parentId].push(insert) : prev[item.parentId] = [insert];
return prev;
}, {});
for (let prop in result) {
result[prop].forEach(function(item, i) {
result[item.id] ? item.children = result[item.id] : ''
});
}
result = result[null];
console.log(JSON.stringify(result));
//[{"name":"level-1","value":"eve-1","id":"id-1","children":[{"name":"level-2","value":"eve-2","id":"id-2","children":[{"name":"level-3","value":"eve-3","id":"id-3"},{"name":"level-3","value":"eve-4","id":"id-4"}]},{"name":"level-2","value":"eve-5","id":"id-5"}]}]
这篇关于javascript - js数据格式转换问题!求帮忙!的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文