var arr = [] function fn(a){ if(a.children && a.children.length>0){ a.children.forEach(i=>{ fn(i) }) }else{ this.arr.push(a.name) return a.name } } var obj =[ { name: 'good1', children: [ { name:'tool', children: [ {name: 'name1'}, {name: 'name2'} ] } ], }, {name: 'name3'} ] this.obj.forEach(j=>{ fn(j) }) console.log(this.arr)