随记前端面试笔试题:
var arr = [[1,2,3],[3,4,5,5],[6,7,8,9,[11,12,[12,13,[14]]]],10];
//编写一个程序将数组扁平化并去除其中重复部分数据,最终得到一个升序且不重复的数组
~思路:
function steamroller(arr){
//新建一个新数组,保存扁平后的数据
var newArr = [];
//通过递归去扁平化
for(var i=0;i<arr.length;i++){
//判断原数组中的元素是否为数组
if(Array.isArray(arr[i])){
//巧妙利用apply把数组拆分成参数压入新数组中
newArr.push.apply(newArr,steamroller(arr[i]))
}else{
newArr.push(arr[i])
}
}
//利用ES6 Set去重(ES6中最常用)
return Array.from(new Set(newArr))
}
//数组升序
function sortNumber(a,b){
return a - b
}
console.log(steamroller(arr1).sort(sortNumber))
控制台显示:
Snipaste_2021-02-24_22-45-43.png