前端面试必备实战

84 阅读1分钟
八种数组去重方法
let arr = [1,23,54,35,66,33,83,54,99,44,22,23,898,35,'1']

//第一种
const result = Array.from(new Set(arr));
const result1 = [...new Set(arr)];

//第二种
function uniqueFun2(arr){
  let len = arr.length;
  for(let i=0; i < len; i++) {
    for(let j = i+1;j < len; j++) {
       if(arr[i] === arr[j]) {
         arr.splice(j,1);
         len--;
         j++;
       }
    }
  }
  return arr;
}

//第三种
function uniqueFun3(arr){
  const newArr = [];
  arr.forEach(item=>{
    if(newArr.indexOf(item)===-1) {
      newArr.push(item)
    }
  });
  return newArr;
}

//第四种
function uniqueFun4(arr){
  const newArr = [];
  arr.forEach(item=>{
    if(newArr.includes(item)) {
      newArr.push(item)
    }
  });
  return newArr;
}

//第五种
function uniqueFun5(arr){
  return arr.filter((item,index)=>{
    return arr.indexOf(item) === index;
  })
}

//第六种
function uniqueFun6(arr){
 const map = new Map();
 const newArr = [];
 arr.forEach((item)=>{
   if(!map.has(item)) {
     map.set(item,true);
     newArr.push(item);
   }
 });
 return newArr;
}

//第七种(不建议)
function uniqueFun7(arr){
 const newArr = [];
 const obj = {};
 arr.forEach((item)=>{
   if(!obj(item)) {
     newArr.push(item);
     obj[item] = true;
   }
 });
 return newArr;
}

//第八种
function uniqueFun8(arr) {
  return arr.reduce((prev,cur)=>(prev.includes(cur)?prev:[...prev,cur]),[])
}
四种将一个多维数组进行扁平化处理
 var arr = [[11,20],30,[40,50,[60,70,[80,92,[110,91]]]]]
 
 function flatFn1(arr) {
   return arr.flat(Infinity);
 }
 
 function flatFn2(arr) {
   arr=arr.toString().split(",");
   let newArr = arr.map((item)=>{
     item = +item;
     return item;
   })
   
   return newArr;
 }
 
 function flatFn3(arr) {
   let str = JSON.stringify(arr);
   str = str.replace(/(\[|\])/g,"");
   str = "["+str+"]";
   return JSON.parse(str);
 }
 
 
  function flatFn4(arr) {
   return arr.reduce((opt1,opt2)=>{
     return opt1.concat(Array.isArray(opt2)?flatFn4(opt2):opt2);
   },[]);
 }
 
 //每隔1秒打印一结果
    for(let i =0; i<3;i++) {
        setTimeout(()=>{
            console.log(i)
        },1000*i)
    }

    let arr = [1,2,[3,4,[5,6],7,[8,9,[10]]]]
    function flatten(arr) {
        return arr.reduce((prev,curr)=>{
            if(Array.isArray(curr)) {
              return prev.concat(flatten(curr))
            } else {
              return prev.concat(curr)
            }
        },[])
    }
    console.log(flatten(arr))
 setTimeout(
        function() {
            console.log(1)
        },0);
    new Promise((resolve, reject) => {
        //for(var i = 0;i<1000;i++) {
            console.log(2) 
             resolve();              
        //} 
    }).then(function(){
        console.log(3)
    }).then(function(){
        console.log(4)
    })
    // process.nextTick(function(){
    //     console.log(5)
    // })
    console.log(6)  
    // 2 6 3 4 5 1  
JS本地创建并下载文件
function saveTextAsFile(textToWrite,fileNameToSaveAs){
  const textFileAsBlob = new Blob([textToWrite]);
  const link = document.createElement('a');
  link.download = fileNameToSaveAs;
  link.href = URL.createObjectURL(textFileAsBlob);
  lick.click();
}

//调用
saveTextAsFile('hello world','hello.txt)