纸上得来终觉浅,绝知此事要躬行
转眼又要开始校招了,组内也要求每人出一道题,忽然就想起自己面试遇到的一道数组扁平化的问题,就顺便温习做下总结。
题目:请使用尽可能多的方法将一个js嵌套数组转换为只有一层的数组。例如:
1 | let arr = [1, [2, [3, 4]]]; |
参考答案:
1 | // 方法 1,常规深度遍历 |
1 | // 方法2 遍历,但是使用reduce简化代码 |
1 | // 方法3 遍历 ES6拓展运算符简化代码 |
1 | // 方法4,不使用遍历, JSON.stringify转化为字符串, 正则取出内容,拼接为JSON数组,转为数组(注意转化字符串方法,toString和join会无法处理极端数据如[2, [3.2, ['s,d,w'],'a,b,c,d,e']] |
1 | //方法5,不使用循环,JSON.stringify转化为字符串, 正则取出内容,拼接为JSON数组,JSON.parse转为数组 |
考察知识点:主要考察数组方面知识
- 数组类型判断
(typeof, Array.isArray, Object.prototype.toString.call(arr))
- 数组遍历方法的熟悉reduce、some、 map、concat等,ES6少许知识,以及简化代码的意识
需要说明的时后面两种不使用遍历的方·JSON.stringify
,对于一些数据类型可能不太适用,这是使用时需要注意的。