js--一些很多实现方法的总结

数据扁平化

数据扁平化是指将多维数组转化为一维数组。

实现:

  1. Array.prototype.flat直接实现数组扁平化arr.flat()括号里面传入你需要把几级中括号进行解析,如果不知道传入Infinity,会把所有的进行解析
  2. toString方法
 let result=[]
 //把其转化为字符串之后用,分割在把每一项转化为数字   
 result.push(arr.toString().split(',').map(item=>Number(item)))
  1. join+正则表达式

  2. JSON.stringify()
    在这里插入图片描述

  3. isArray与some结合
    在这里插入图片描述

while(arr.some(item=>Array.isArray(item))){
            arr=[].concat(...arr)
     }
  1. 递归写
  let arr = [1, [1, 2], 2, [3, 3, [4, 4, [5, 5], 6], 6, [7, 7], 8], 8, 9, 9];
    (function () {
      function myFlat() {
        let result = [];
        let that = this;
        let fn = (arr) => {
          for (var i = 0; i < arr.length; i++) {
            if (Array.isArray(arr[i])) {
              fn(arr[i])
              continue
            }
            result.push(arr[i])
          }
        }
        fn(that)
        return result
      }
      Array.prototype.myFlat = myFlat
    })()
    arr = arr.myFlat()
    console.log(arr);

数组去重

  1. new Set(),利用set不能有重复元素的特性,最后使用Array.from转换为数组
  2. 利用对像的key值是唯一特性
 
    function det(arr){
     var result={};
     arr.forEach((index,item) => {
        result[arr[item]]="www"
     });
         //  取key值
          //转换为数字         
          result=Object.keys(result).map(item=>Number(item))
     return result

    }
  1. 利用indexOf只能检测重复数字的第一项的特性
 function det(arr){
      var result=[];
      arr.forEach((item,index) => {
        if(arr.indexOf(item)==index){
           result.push(item)
        }
      });
     return result
    }
  1. 利用reduce可以获取前一次计算完的值(扩展运算符也可以起到push的作用)
 function det(arr){
      var result=arr.reduce((pre,current)=>{
           return pre.includes(current)?pre:[...pre,current]
      },[])
     return result
    }
  1. filter过滤(同上)
  2. 双重for循环
var arr = [1, 2, 3, 4, 5, 3, 1, 6, 9, 10];
        let obj = []
        let obj2 = {}
        var a = new Set([...arr])
        a = Array.from(a)
        console.log(a);
        //---------------------------------//
        console.log('@@@@@@@@@@@@@@@@@@@@');
        arr.forEach((item, index) => {
            if (arr.indexOf(item)) {
                obj.push(arr[index])
            }
        })
        console.log(obj);
        //---------------------------------//
        console.log('@@@@@@@@@@@@@@@@@@@@');

        function det(arr) {
            var m = arr.reduce((pre, cur) => {
                return pre.includes(cur) ? pre : [...pre, cur]
            }, [])
            return m
        }
        console.log(det(arr));
        //---------------------------------//
        console.log('@@@@@@@@@@@@@@@@@@@@');
        for (var i = 0; i < arr.length; i++) {
            for (var j = i + 1; j < arr.length; j++) {
                if (arr[i] == arr[j]) {
                    arr.splice(i, 1)
                    j--
                }
            }
        }
        console.log(arr);
        //---------------------------------//
        console.log('@@@@@@@@@@@@@@@@@@@@');
        arr.filter((item,index,self)=>{
           return self.indexOf(item)==index
        })
        console.log(arr);

在这里插入图片描述

跨域问题

html一些特殊语义化的标签是不存在跨域问题的,link,script,img,frame是不存在跨域问题的

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

``


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值