es6新增扩展

一  字符串扩展

        let str='wyyw';

  1.  srt.startsWith('w')      true  以w开头
  2.  srt.endsWith('w')      true 以w结尾
  3.  str.includes('e')    false  e是否存在  == indexOf
  4. str.repeat(2)    wyywwyyw  重复次数
  5. str.padStart(5,'2') 2wyyw  在开头补齐长度5
  6. str.padEnd(5,'2')   wyyw2 在结尾补齐长度5
  7. 模板字符串   ``
    1. 内容可换行
    2. 可用${变量}
  1. str.trimStart()    消除字符串头部的空格
  2. str.trimEnd()    消除字符串尾部的空格

 新增的symbol 基本数据类型(暂时用不到)

特点:1自己不认识自己,与自己不相等 

           2无法被重建

          3不能进行计算

    1创建

const s1 = Symbol('debug');
const s2 = Symbol('xxyy');
const str = 'debug';
console.log(s1 === str); // false

console.log(s1 === s2); // false
2充当对象的私有属性
const obj = {};
const sym = Symbol();
obj[sym] = 'foo';
obj.bar = 'bar';
console.log(obj); // { bar: 'bar' }
console.log(sym in obj); // true
console.log(obj[sym]); // foo
console.log(Object.keys(obj)); // ['bar']
 

二  数组扩展

  1. 数组copy

例子:const a=[1,2,3]

const b=[...a]

b=[1,2,3]

        2 数组拼接合并 

例子:const a=[1,2,3]

          const  b=[1,2,3]

         const  c=[...a,...b]

        c=[1,2,3,4,5,6]

3数组打印

 console.log(...c)//1,2,3,4,5,6

  4将伪数组变成真数组

  1)将用js获取到得dom类数组转化成真正得数组

  1)Array.from()

  5遍历 

        let a=['a', 'b']

for (let index of a.keys()) {
  console.log(index);//0 1
}
for (let elem of a.values()) {
  console.log(elem);//'a','b'
}
for (let [index, elem] of a.entries()) {
  console.log(index, elem);// 0,'a'    1,'b'
}

三函数扩展

         function  getData(a,b,...c)

  1. 参数不确定 show(a,b,..c)
  2. ...c=剩余所有的参数
  3. ...c 必须放在最后一位

四 数值扩展

  • Math
  1. Math.trunc(4.1)  4  直接去掉小数部分(
  2. 可接受数字字符串,内部会自动转化为number)
  3. Math.sign(x)   x>0 =>1     x<0 => -1       x=0  => 0 判断x是正负数和0
  • Number
  1. Number.isNaN(NaN)   true
  2. Number.parseInt('3.4')   3.4  可接受数字字符串,内部会自动转化为number)
  3. Number.parseFloat('3.43')   3.43 可接受数字字符串,内部会自动转化为number)
  4. Number.isInteger(23.23)  false  是否是整数  
  5. Number.EPSILON    最小精确单位   用途:浮点计算精度丢失

            例子:Math.abs(4.2-4.2)<Number.EPSILON===true   两者相等

五 对象扩展

  1. 2个对象值是否完全相等

          Object.is(obj1,obj2)

         2对象合并

         const  a=Object.assign(obj1,obj2)  有则覆盖  无则合并 

   3遍历:Object.keys(obj)  注意写法

    

let obj = { a: 1, b: 2, c: 3 };

for (let key of Object.keys(obj)) {
console.log(key); // 'a', 'b', 'c'
}

for (let value of Object.values(obj)) {
console.log(value); //1,2,3
}

for (let [key ,value]of Object.entries(obj)) {
console.log(key+':',value); // a:1,b:2,c:3
}

六 JSON

  1.  将字符串转化为JSON       JSON.parse()

  注意::str = '{"name":"小明","age":18}'; 属性name和age都用双引号引住

      2 将JSON转化为  字符串     JSON.stringify()

//判断数组是否包含某对象
let data = [
    {name:'echo'},
    {name:'听风是风'},
    {name:'天子笑'},
    ],
    val = {name:'天子笑'};
JSON.stringify(data).indexOf(JSON.stringify(val)) !== -1;//true

//判断两数组/对象是否相等
let a = [1,2,3],
    b = [1,2,3];
JSON.stringify(a) === JSON.stringify(b);//true
//深拷贝
function deepClone(data) {
    let _data = JSON.stringify(data),
        dataClone = JSON.parse(_data);
    return dataClone;
};
//测试
let arr = [1,2,3],
    _arr = deepClone(arr);
arr[0] = 2;
console.log(arr,_arr)//[2,2,3]  [1,2,3]

   

原文地址:https://www.cnblogs.com/fanjiawen/p/13473552.html