知识点 arguments.callee 对于arguments大家应该都认识吧。callee就是函数自身 官方建议用命名函数实现递归。(也就是叫你调用函数名)
[ { id: 1, children: [...] }, { id: 2, children: [...] } ] // 把一个树展平。 function recursion(arr){ var flatObj = {}; (function(arr){ for(var i=0,len=arr.length; i<len; i++){ var item = arr[i]; if(item.children){ flatObj[item.id] = item.children; arguments.callee(item.children) } // 其它逻辑代码 } })(arr); return flatObj; }格式化数据
var path = []; var arr = []; function rev(list){ list.forEach( (v, i) => { if(typeof v === "string"){ arr.push(path.join('-') + " : " + v); }else{ path.push(v[0]); rev(v[1]); path.pop(); } }); } rev(json[0][1]); arr.join('\n');