昨天写这个的时候头昏脑胀,弄到很晚,最后依然是个半成品,好在结果大致出来了——虽然我都不很清楚怎么出来的。通过了,明天面试。
var industry_list = [
{ parent_ind: '女装', name: '连衣裙' },
{ name: '女装' },
{ parent_ind: '女装', name: '半身裙' },
{ parent_ind: '女装', name: 'A裙' },
{ name: '数码' },
{ parent_ind: '数码', name: '电脑配件', },
{ parent_ind: '电脑配件', name: '内存' },
{ parent_ind: '内存', name: '内存1' },
{ parent_ind: '内存', name: '内存2' },
{ parent_ind: '内存2', name: '内存2-1' },
{ parent_ind: '内存2', name: '内存2-2' }
]
// 时间太晚了,后面一步删除parent_ind和name没做,不过效果已经出来了
function convert_format(data) {
let tempObj = {}; // 临时对象
let treeObj = {}; // 返回值:树对象
data.forEach((val, idx) => {
tempObj[val.name] = val;
})
const keys = Object.keys(tempObj);
for(let key of keys){
if(tempObj[key].parent_ind !== undefined) {
if(keys.includes(tempObj[key].name)) {
tempObj[tempObj[key].parent_ind][tempObj[key].name] = tempObj[[tempObj[key].name]];
}
} else {
treeObj[key] = tempObj[key];
delete treeObj[key].name;
}
}
delAttr(treeObj);
return treeObj;
}
// for of遍历obj,判断属性是否为对象Object.prototype.toString.call(object) === '[object Object]',
// 若是删除name和parent_ind属性, 尾递归,继续删除子对象的name parent_ind
function delAttr(obj) {}
console.log('treeObj', convert_format(industry_list))
网友评论