1、数组展平(又称数组降维)flat()方法会按照指定的深度递归遍历数组,将所有元素与遍历的子数组中的元素合并放入一个新数组并返回consttest=["a",["b","c"],["d",["e",["f"]],"g"]]//flat当不传参数,默认压平层test.flat()//["a","b","c","d",["e",["f"]],"g"]//flat传递一个整型参数,整型是展平的层数test.flat(2)//["a","b","c","d","e",["f"],"g"]//当Infinity关键字作为参数时,无论嵌套多少层,都会转为一维数组test.flat(Infinity)//["a","b","c","d","e","f","g"]//<=0的整数将返回原始数组而不展平test.flat(0)test.flat(-1)//["a",["b","c"],["d",["e",["f"]],"g"]]//如果原数组有空格,则flat()m方法将跳过空格。["a","b","c","d",,].flat()//["a","b","c","d"]方法一:使用reduce方法在一次展平所有函数flattenDeep(arr){returnArray.isArray(arr)?arr.reduce((acc,cur)=>[...acc,...flattenDeep(cur)],[]):[arr]}//测试vartest=["a",["b","c"],["d",["e",["f"]],"g"]]flattenDeep(test)//["a","b","c","d","e","f","g"]实现平面函数functionflat(arr,depth=1){returndepth>0?arr.reduce((acc,cur)=>{if(Array.isArray(cur)){return[...acc,...flat(cur,depth-1)]}return[...acc,cur]},[]):arr}//测试vartest=["a",["b","c"],["d",["e",["f"]],"g"]]//不传参数时,默认平面层为flat(test)//["a","b","c","d",["e",["f"]],"g"]//传入一个整数参数,整数为展平的层数flat(test,2)//["a","b","c","d","e",["f"],"g"]//当Infinity关键字作为参数时,无论嵌套多少层,都会转为一维数组flat(test,Infinity)//["a","b","c","d","e","f","g"]//Integer<=0将返回原始数组而不展平flat(test,0)flat(test,-10)//["a",["b","c"],["d",["e",["f"]],"g"]];//如果原数组有空格,flat()方法会跳过空格vararr=["a","b","c","d",,]flat(arr)//["a","b","c","d"]方法二:堆叠一次AllfunctionsflattenDeep(arr){constresult=[]//将数组元素复制到栈中,直接赋值会改变原数组conststack=[...arr]//如果栈不为空,则循环遍历while(stack.length!==0){constval=stack.pop()if(Array.isArray(val)){//如果数组再次入栈,又展开一层stack.push(...val)}else{//如果不是数组,则通过头部插值的方式将其插入到result数组中result.unshift(val)}}returnresult}//testvartest=["a",["b","c"],["d",["e",["f"]],"g"]]flattenDeep(动物)//["a","b","c","d","e","f","g"]2.数组去重方法一:Set(ES6)functionunique(arr){returnArray.from(newSet(arr))}//orvarunique=arr=>[...newSet(arr)]//测试vararr=[1,2,2,3]unique(arr);//[1,2,3]方法二:reducefunctionunique(arr){returnarr.sort().reduce((acc,cur)=>{if(acc.length===0||acc[acc.length-1]!==cur){acc.push(cur);}returnacc},[])};//测试vararr=[1,2,2,3]unique(arr);//[1,2,3]方法三:过滤rfunctionunique(arr){returnarr.filter((element,index,array)=>{returnarray.indexOf(element)===index})}//测试vararr=[1,2,2,3]独特的(arr);//[1,2,3]
