美文网首页
ES6方法的一些小应用

ES6方法的一些小应用

作者: 小小鱼yyds | 来源:发表于2021-05-23 19:07 被阅读0次
image.png

其中的.padStart()可以用来给日期补0:

      let date1 = '2018-3-8'
      let arry = date1.split('-')
      arry = arry.map((item) => {
        item = item.padStart(2, '0')
        return item
      })
      date1 = arry.join('-')
      console.log('打印补0以后的日期----', date1)  // 2018-03-08

.padEnd()貌似用途不大🤣

trim()消除空格:

      const str1 = '    测试     '
      console.log('消除空格----', str1.trim())   
      console.log('消除前面的空格----', str1.trimStart())
      console.log('消除后面的空格----', str1.trimEnd())

ES2019 对字符串实例新增了trimStart()trimEnd()这两个方法。trimStart()消除字符串头部的空格,trimEnd()消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。

取整

const code = 12.658678
const num1 = parseInt(code)   // 12,会取整-不四舍五入
const num2 = Number.parseInt(code)   // 12,会取整-不四舍五入
const num3 = Math.floor(code)      // 12,会取整-不四舍五入
const num4 = parseFloat(code).toFixed(0)      // 13,会取整-会四舍五入
const num5 = Math.trunc(code)     // 12,会取整-不四舍五入

除了.toFixed()这种方式会四舍五入,其他的方法都不四舍五入,code可以是字符串,将字符串转为整数

Math方法集合

ES6 在 Math 对象上新增了 17 个与数学相关的方法。所有这些方法都是静态方法,只能在 Math 对象上调用。

  • Math.trunc(): 用来去除一个数的小数部分来取整,不会四舍五入
  • Math.sign(): 判断一个数是正数(返回+1)、负数(返回-1)、零(返回0)、还是其他(返回NaN)
  • Math.cbrt(): 计算一个数的立方根,非数值会先转为数值再计算
  • Math.imul(a,b): 高精度乘法,可以当做a * b来用。它可以精准返回乘积超过了 2 的 53 次方的值
  • Math.floor():取整,可以是字符串形式,不会四舍五入
  • Math.pow(a,b):a的b次方是多少,返回double类型,如果需要强制转换为int类型,可以这样写:(int)Math.pow(a,b)

平时不怎么会用到的方法:

ES6 新增了 6 个双曲函数方法。

  • Math.sinh(x) 返回x的双曲正弦(hyperbolic sine)
  • Math.cosh(x) 返回x的双曲余弦(hyperbolic cosine)
  • Math.tanh(x) 返回x的双曲正切(hyperbolic tangent)
  • Math.asinh(x) 返回x的反双曲正弦(inverse hyperbolic sine)
  • Math.acosh(x) 返回x的反双曲余弦(inverse hyperbolic cosine)
  • Math.atanh(x) 返回x的反双曲正切(inverse hyperbolic tangent)

from方法转数组

如果后台返回的数据是一个对象,但是要取出对象中某个参数的值组成数组,其他参数不要,可以用from方法

const peoples = [
      { name: 'aaa', age: 2 },
      { name: 'bbb', age: 3 },
      { name: 'ccc', age: 4 }
    ]

只要所有name组成的数组:

    const names = Array.from(peoples , item => item.name)
    console.log('打印名字数组-----', names )  // [ 'aaa', 'bbb', 'ccc']

数组排序

  • 如果是按照字母排序,严格说是按照编码排序:
const originalStr = ['apple', 'orro', 'pskkd', 'brekk']
console.log('打印排序---', originalStr .sort())   
// ['apple", "brekk", "orro", "pskkd"]
  • 如果是按照数字大小排序:
    const originalNum = [1, 22, 105, 15, 10]
    const sortNumber = (a, b) => { return a - b }
    console.log('打印排序---', originalNum.sort(sortNumber))
    // [1, 10, 15, 22, 105]

合并参数

在请求数据前,如果要对某些参数进行修改,需要修改后的参数值覆盖之前的值,可以用扩展运算符或者Object.assign(target,source1,source2)

  • assign方法:
    const target1 = { name: 'alice', code: 10293, date: '2020-09-22' }
    const source2 = { name: 'jey' }
    const source3 = { status: 'waiting', open: 1 }
    // 把所有参数合并起来:
    Object.assign(target1, source2, source3)
    console.log('打印target1-----', target1)
    // {code: 10293,date: "2020-09-22",name: "jey",open: 1,status: "waiting"}
  • 扩展运算符
    const target4 = { ...target1, ...source2, ...source3 }
    console.log('打印target4-----', target4)
    //  {code: 10293,date: '2020-09-22",name: "jey",open: 1,status: "waiting"}

assign,扩展运算符都是是浅拷贝,如果要实现深拷贝,可以使用下面两种方法:

  • 方法一
   const dict1 = { name: 'alice', code: 10293, date: '2020-09-22' }
   const dict3 = JSON.parse(JSON.stringify(dict1))
   dict3.code = 55
   console.log('打印dict1-----', dict1)
  // { name: 'alice', code: 10293, date: '2020-09-22' }
  • 方法二
    const dict1 = { name: 'alice', code: 10293, date: '2020-09-22' }
    const dict4 = this.deepClone(dict1)
    dict4.code = 666
    console.log('打印dict1-----', dict1)
    // { name: 'alice', code: 10293, date: '2020-09-22' }

    methods: {
    deepClone(obj) {
      const objClone = Array.isArray(obj) ? [] : {}
      if (obj && typeof obj === 'object') {
        for (const key in obj) {
          if (obj.hasOwnProperty(key)) {
            // 判断ojb子元素是否为对象,如果是,递归复制
            if (obj[key] && typeof obj[key] === 'object') {
              objClone[key] = deepClone(obj[key])
            } else {
              // 如果不是,简单复制
              objClone[key] = obj[key]
            }
          }
        }
      }
      return objClone
    }
  }
   

相关文章

网友评论

      本文标题:ES6方法的一些小应用

      本文链接:https://www.haomeiwen.com/subject/fokbjltx.html