Open mhahaha opened 5 years ago
现有如下结构的一个tree数组:
let tree = [ { name: 'a', children: [ { name: 'b' }, { name: 'dd' } ] }, { name: 'C', children: [ { name: 'g', children: [ { name: 'a' }, { name: 'c' } ] } ] } ];
写一个函数,过滤出所有 name = 'a' 的分支。
name = 'a'
/** * 过滤符合条件的树结构 * * @method filterTree * @param {Array} sourceTree * * @returns {Array} */ function filterTree (sourceTree) { if (!Array.isArray(sourceTree)) { return; } let filterRes = sourceTree.filter(item => { if (item.name === 'a') { return true; } else if (!item.children || !item.children.length) { return false; } item.children = filterTree(item.children); return item.children.length; }); return filterRes; } let res = filterTree(tree); console.log(res);
输出结果:
请问为什么filter最后要返回一个item.children.length?
请问为什么filter最后要返回一个item.children.length? 只需保留有效数据。
现有如下结构的一个tree数组:
写一个函数,过滤出所有
name = 'a'
的分支。输出结果: