前言JS手写面试题中,有很多是关于数组的。下面我们来解决各种姿势的数组去重和扁平化。数组去重数组去重是面试中的一道基础题,但是还是可以在里面挖到很多js知识的。ES6最常用的Set去重Set对象是一个值的集合,你可以按照插入的顺序迭代它的元素。Set中的元素只会出现一次,即Set中的元素是唯一的。functionunique(arr){returnArray.from(newSet(arr))}letarr=[1,1,'true','true',true,true,15,15];console.log(unique(arr))//[1,'true',true,15]letunique2=arr=>[...newSet(arr)]console.log(unique2(arr));//[1,'true',true,15]doublefor在外循环循环元素,在内循环比较值。functionunique(arr){for(vari=0;iArray.isArray(item))){arr=[].concat(...arr);}returnarr;}toString方法+split方法调用的toString方法array,将数组转换为字符串,然后使用split将其还原为数组。split形成的数组每一项都是一个字符串,所以需要使用map方法遍历数组,将每一项转化为数值。functionflatten(arr){console.log(arr.toString());//1,2,3,4,5,6console.log(arr.toString().split(','));//['1','2','3','4','5','6']returnarr.toString().split(',').map(function(item){returnNumber(item);})}letary=[1,[2,[3,[4,5]]],6];console.log(flatten(ary));//[1,2,3,4,5,6]使用join方法可以实现与toString方法类似的效果。递归遍历每一项,如果是数组就continue,如果不是数组就concat。functionflatten(arr){varresult=[];for(vari=0,len=arr.length;i{returnresult.concat(Array.isArray(item)?flatten(item):item);},[]);}letary=[1,[2,[3,[4,5]]],6];console.log(flatten(ary));//[1,2,3,4,5,6]总结数组去重和数组扁平化很容易面试的时候问。下面是不同姿势的解决方法。感兴趣的朋友可以在下方评论区分享更多知识!!作者:_清水链接:https://juejin.cn/post/6950307682737717261来源:掘金版权归作者所有。商业转载请联系作者授权,非商业转载请注明出处。