有一个数据对象,您需要解析它,记下每个 id 及其父对象。
我的版本:
const object = {"id":"1","sub_id":[{"id":"1.1","sub_id":[{"id":"1.1.1"},{"id":"1.1.2"},{"id":"1.1.3"}]},{"id":"1.2","sub_id":[{"id":"1.2.1"},{"id":"1.2.2"},{"id":"1.2.3"},{"id":"1.2.4","sub_id":[{"id":"1.2.4.1"}]}]}]};
let data = object;
let relation = undefined;
function objectParsing(data) {
if (data["sub_id"] != undefined) {
for (let key in data) {
if (key == 'id') {
console.log('Create new id: ' + data[key]);
if (relation != undefined) {
console.log('Create parent: ' + relation + '_id for id: ' + data[key]);
relation = data[key];
console.log('Store new relation: ', relation);
} else {
relation = data[key];
}
}
if (key == 'sub_id') {
data[key].forEach(function (item, i, arr) {
objectParsing(item);
});
}
}
} else {
for (let key in data) {
console.log('Create new id: ' + data[key]);
if (relation != undefined) {
console.log('Create relation: ' + relation + '_id for id: ' + data[key]);
}
}
}
}
objectParsing(data);
控制台输出:
Create new id: 1
Create new id: 1.1
Create parent: 1_id for id: 1.1
Store new relation: 1.1
Create new id: 1.1.1
Create relation: 1.1_id for id: 1.1.1
Create new id: 1.1.2
Create relation: 1.1_id for id: 1.1.2
Create new id: 1.1.3
Create relation: 1.1_id for id: 1.1.3
Create new id: 1.2
Create parent: 1.1_id for id: 1.2 // проблема тут
Store new relation: 1.2
Create new id: 1.2.1
Create relation: 1.2_id for id: 1.2.1
Create new id: 1.2.2
Create relation: 1.2_id for id: 1.2.2
Create new id: 1.2.3
Create relation: 1.2_id for id: 1.2.3
Create new id: 1.2.4
Create parent: 1.2_id for id: 1.2.4
Store new relation: 1.2.4
Create new id: 1.2.4.1
Create relation: 1.2.4_id for id: 1.2.4.1
对于id 1.2我覆盖的依赖id 1——帮助修正,考虑到对象的深度可以有条件地无限,同时可能有更优化的方式。
事实上,您需要获取
id一个元素并对所有sub_id该对象运行递归。这是控制台输出版本:
这是一维数组版本: