最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 学习记录-数组常见操作处理

    正文概述 掘金(lena)   2021-01-07   440

    1. 数组扁平化

    1.使用栈的思路进行数组扁平化

        const arr =[1,[2,2], ,[4,[1,2],5], , ,7,2];
        const flatten = (arr)=>{
          const stack=[];
          const res=[];
          stack.push(arr);
          while(stack.length){
            const item = stack.pop();
            if(Array.isArray(item)){
              stack.push(...item);
            }else{
              res.push(item);
            }
          }
          return res.reverse();
        }
        flatten(arr);
    

    2.flat

    const res = arr.flat(Infinity);
    

    3.正则 将结果值都转换为字符串类型

     const res = JSON.stringify(arr).replace(/\[|\]/g,'').split(',');
    

    4.优化正则

      JSON.parse('['+JSON.stringify(arr).replace(/\[|\]/g,'')+']');
    

    5.使用reduce

    const flatten = arr => {
        return arr.reduce((pre,cur)=>{
          return pre.concat(Array.isArray(cur) ? flatten(cur) : cur);
        },[])
      }
      const res = flatten(arr);
    

    6. 递归

     var arr=[1,2,[3,4,[5,6]],7,8];
     function flatArr (arr){
       const res =[];
       for(let i=0;i<arr.length;i++){
         if(Array.isArray(arr[i])){
          //res.push(...flatArr(arr[i]));
          flatArr(arr[i]);
         }else{
           res.push(arr[i]);
         }
       }
       return res;
     }
     flatArr(arr);
    

    2.数组去重

    1.使用map对象的思路进行数组去重

    var arr =[1,2,2, ,4,5, , ,7,2];
     const unRepeat= arr => {
        var obj = {};
        var res=[];
        for(let j=0;j<arr.length;j++){
          const item = arr[j];
          if(!obj[item]){
            obj[item] = 1; // 此处,如果obj[item]为undefined,会去重失败
            res.push(item);
          }
        }
        return res;
     }
     unRepeat(arr);
    

    2.利用indexOf

     var arr =[1,2,2, ,4,5, , ,7,2];
     const unique = arr => {
       const res=[];
       for(let i=0;i<arr.length;i++){
         if(res.indexOf(arr[i]) === -1){
           res.push(arr[i]);
         }
       }
       return res;
     }
     unique(arr);
    

    3.利用filter

     var arr =[1,2,2, ,4,5, , ,7,2];
       const unique4 = arr => {
        return arr.filter((item, index) => {
          return arr.indexOf(item) === index;
        });
      }
      unique4(arr);
    

    4.利用include

    const unique3 = arr => {
      const res = [];
      for (let i = 0; i < arr.length; i++) {
        if (!res.includes(arr[i])) res.push(arr[i]);
      }
      return res;
    }
    

    5.利用map

    const unique = arr => {
      const map = new Map();
      const res = [];
      for (let i = 0; i < arr.length; i++) {
        if (!map.has(arr[i])) {
          map.set(arr[i], true)
          res.push(arr[i]);
        }
      }
      return res;
    }
    
    参考文章:
    • 32个手写JS,巩固你的JS基础(面试高频)

    起源地下载网 » 学习记录-数组常见操作处理

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元