前端常见面试算法题


查看算法源码: 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: [
				......
		]}
		.....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值