树形结构给每个对象添加唯一标识,并找出最大值

90 阅读1分钟
var obj=[

{

name: "1级分类1",

children: [

{

name: "二级分类1",

children: [

{ name: "三级分类1", number: 3, rate: "1%" },

{ name: "三级分类1", number: 3, rate: "1%" },

],

},

{

name: "二级分类2",

children: [{ name: "三级分类1", number: 3, rate: "1%" }],

},

],

},

{

name: "1级分类1",

children: [

{

name: "二级分类1",

children: [

{ name: "三级分类1", number: 3, rate: "1%" },

{ name: "三级分类1", number: 3, rate: "1%" },

],

},

{

name: "二级分类2",

children: [{ name: "三级分类1", number: 3, rate: "1%" }],

},

],

},

];
var id = 1;

var maxNumber = 0;

for (var i in obj) {

obj[i].id = id;

id++;


if (obj[i].children) {

for (var j in obj[i].children) {

obj[i].children[j].id = id;

id++;



if (obj[i].children[j].children) {

for (var k in obj[i].children[j].children) {

obj[i].children[j].children[k].id = id;

id++;



if (obj[i].children[j].children[k].number > maxNumber) {

maxNumber = obj[i].children[j].children[k].number;

}

}

}

}

}

}


console.log(obj);
console.log(maxNumber);

var obj=[

{

name: "1级分类1",

children: [

{

name: "二级分类1",

children: [

{ name: "三级分类1", number: 3, rate: "1%" },

{ name: "三级分类1", number: 3, rate: "1%" },

],

},

{

name: "二级分类2",

children: [{ name: "三级分类1", number: 3, rate: "1%" }],

},

],

},

{

name: "1级分类1",

children: [

{

name: "二级分类1",

children: [

{ name: "三级分类1", number: 3, rate: "1%" },

{ name: "三级分类1", number: 3, rate: "1%" },

],

},

{

name: "二级分类2",

children: [{ name: "三级分类1", number: 3, rate: "1%" }],

},

],

},

];
let _maxObj = {};
let rootId = 0;
const handleObj = list => {
  for (let i = 0, len = list.length; i < len; i++) {
    const curr = list[i];
    curr.id = rootId;
    rootId++;
    if (curr.number) {
      _maxObj = _maxObj.number > curr.number ? _maxObj : curr;
    }
    if (curr.children && Array.isArray(curr.children) && curr.children.length) {
      handleObj(curr.children);
    }
  }
}
handleObj(obj);
console.log(obj)
console.log(_maxObj)