前端常用数据处理方法-2

// join 将数组连接成字符串
    let arr1 = ['George', 'George', 'George']
    console.log(arr1.join(''))//GeorgeGeorgeGeorge

    // replace() 去掉字符串的空格
    let string00 = '   独爱 那杯 cc   '

    console.log(string00.replace(/\s+/g, ''))      //'独爱那杯cc'       去除所有的空格
    console.log(string00.replace(/^\s*/g, ''))     //'独爱 那杯 cc '    去除左边的空格
    console.log(string00.replace(/\s*$/g, ''))     //' 独爱 那杯 cc'    去除右边的空格
    console.log(string00.replace(/^\s*|\s*$/g, ''))//'独爱 那杯 cc'     去除两端的空格
    


    // 解析网址
    var pop = 'sdfasdasdfwww.xiaohongshu.comdsjksdjsdj'
    console.log(pop.substring(pop.indexOf('w'), (pop.indexOf('m') + 1))) // 'www.xiaohongshu.com'
    console.log(pop.substr(pop.indexOf('w'), 19)) // 'www.xiaohongshu.com'


    // 数组排序
    let arrAy = [1, 2, 3, 2, 5, 3, 5, 1, 6, 4]

    // 正序
    arrAy.sort((a, b) => {
      return a - b
    })
    console.log(arrAy)//[ 1, 1, 2, 2, 3, 3, 4, 5, 5, 6 ]

    // 倒序
    arrAy.sort((a, b) => {
      return b - a
    })
    console.log(arrAy)//[ 6, 5, 5, 4, 3, 3, 2, 2, 1, 1 ]


    // 冒泡排序
    function bubbleSort(arr) {
      let len = arr.length;
      for (let i = 0; i < len; i++) {
        for (j = 0; j < len - 1 - i; j++) {
          if (arr[j] > arr[j + 1]) {
            [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
          }
        }
      }
      return arr;
    }
    console.log(bubbleSort(arrAy))//[ 1, 1, 2, 2, 3, 3, 4, 5, 5, 6 ]


    // 数组求和 取最大数 最小数
    const array99 = [5, 4, 7, 8, 9, 2];

    // 1、求和
    console.log(array99.reduce((a, b) => a + b))//35

    // 2、最大数
    console.log(array99.reduce((a, b) => a > b ? a : b))//9

    // 3、最小数
    console.log(array99.reduce((a, b) => a < b ? a : b))//2


    // 手写取最大数
    function array(arr){
      let value;
      arr.forEach(item=>{
        arr.forEach(i=>{
          if(item < i){
            value = i
          }
        })
      })
      console.log(value)//9
    }
   array(array99)

    //  从数组中过滤出虚假值
    const array88 = [3, 0, 6, 7, "", false];
    console.log(array88.filter(Boolean))//[3,6,7]


    // 数组去重
    let arr99 = ["a", "b", "a", "b", "z", "c", "x", "a", "x", "b", "c"];
    let arr88 = []
    for (let index = 1; index < arr99.length; index++) {
      if (arr88.indexOf(arr99[index], 0) === -1) {
        arr88.push(arr99[index])
      }
    }
    console.log(arr88)//[ 'b', 'a', 'z', 'c', 'x' ]
    // 或
    console.log([...new Set(arr99)])//[ 'a', 'b', 'z', 'c', 'x' ]
    // 或
    let arr999 = arr99.filter((item, index) => arr99.indexOf(item, 0) === index)
    console.log(arr999)//[ 'a', 'b', 'z', 'c', 'x' ]

    // 浅拷贝 + 深拷贝

    // 浅拷贝
    // 浅拷贝只能拷贝一层属性 并且拷贝的是内存地址 相互之间修改会有影响
    let obj22 = {
      class: "UI",
      age: 20,
      love: {
        friuts: "apple",
        meat: "beef",
      },
    };

    function pos(b) {
      let arr = {};
      for (let k in b) {
        arr[k] = b[k];
      }
      return arr;
    }
    console.log(pos(obj22))//{ class: 'UI', age: 20, love: { friuts: 'apple', meat: 'beef' } }

    // 深拷贝

    // JSON方法
    console.log(JSON.parse(JSON.stringify(obj22)))//{ class: 'UI', age: 20, love: { friuts: 'apple', meat: 'beef' } }

    // 递归算法
    function pos2(b) {
      let arr = {};
      for (let k in obj22) {
        if (typeof b[k] === "objeck") {
          arr[k] = pos(b[k]);
        } else {
          arr[k] = b[k];
        }
      }
      return arr;
    }
    console.log(pos2(obj22))//{ class: 'UI', age: 20, love: { friuts: 'apple', meat: 'beef' } }


    // 封装对象扁平化
    function flatten(obj) {
      const ans = {}
      inner(obj, null)
      function inner(o, prev) {
        for (let key in o) {
          if (o[key] instanceof Object) {
            if (prev === null) {
              inner(o[key], key)
            } else {
              inner(o[key], prev + '.' + key)
            }
          } else {
            if (prev === null) {
              ans[key] = o[key]
            } else {
              ans[prev + '.' + key] = o[key]
            }
          }
        }
      }
      return ans
    }
    let obj = { 
      a: "hhh",
      b: "ggg",
      c: 666,
      d: {
        name1: "A",
        name2: "B",
        name3: "C"
    },
      e : [1,2,3]
  }
    console.log(flatten(obj))
    /* {  a: 'hhh',
          b: 'ggg',
          c: 666,
          'd.name1': 'A',
          'd.name2': 'B',
          'd.name3': 'C',
          'e.0': 1,
          'e.1': 2,
          'e.2': 3  
      } */


    function sleep(){
      return  new Promise((resolve,rejecct)=>{
        setTimeout(() => {
           resolve();
        }, 6000);
      })
    }
    async function p() {
      await sleep()
      console.log(1)//6秒后执行1
    }
    p()

你可能感兴趣的:(前端,javascript,开发语言)