查看算法源码: https://github.com/huayeer/Algorithm
flag算法
题目:
又称扁平化算法,已知一个不规则的多维多组,输出扁平化的字符串
如array=[‘a’, [‘b’, ‘c’], 2, [‘d’, ‘e’, ‘f’], ‘g’, 3, 4];
需输出字符串a,b,c,2,d,e,f,g,3,4
方法一:递归
function flag1 (array) {
let newArr = [];
handleArray (array)
function handleArray (arr) {
arr.forEach(item => {
if (Array.isArray(item)) {
handleArray(item)
} else {
newArr.push(item)
}
})
}
console.log(newArr.join(','))
}
flag1(array)
方法二:toString运算符
function flag2 (array) {
let toString = Array.prototype.toString;
Array.prototype.toString = function() {
// join 默认逗号隔开,所以Array.prototype.toString可以不修改,如果需要其他字符隔开,就需要修改Array.prototype.toString
return this.join(',')
}
console.log(array + '')
Array.prototype.toString = toString
}
flag2(array)
生成父子嵌套树
题目
已知数组
data=[
{id: 23,parentId:23123, name:'aaa'},
{id: 13,parentId:23, name:'bbb'},
....
]
其中id代表当前唯一标识,parentId代表当前元素的伏元素的唯一标识,根据id和parentId判断元素的层级关系,最终组成一个树状结构,最终的数据结构如下:
a = [
{id: 23, parentId:23213,name:'aaa', children:[
{id: 13, parentId: 23, name: 'bbb', children: [
......
]}
.....