ES6

1.Set 对象

// 可不传数组 
const set1 = new Set() 
set1.add(1) 
set1.add(2) 
console.log(set1) // Set(2) { 1, 2 } 

// 也可传数组 
const set2 = new Set([1, 2, 3]) 
// 增加元素 使用 add 
set2.add(4) 
set2.add('林三心') 
console.log(set2) // Set(5) { 1, 2, 3, 4, '林三心' } 
// 是否含有某个元素 使用 has 
console.log(set2.has(2)) // true 
// 查看长度 使用 size 
console.log(set2.size) // 5 
// 删除元素 使用 delete 
set2.delete(2) 
console.log(set2) // Set(4) { 1, 3, 4, '林三心' }
复制代码

不重复性

对象不同指针,无法去重
NaN会被去重
const arr = [1,3,1,3,5];
const arr1 = [...new Set(arr)]; // [1,3,5]
复制代码

2.Map 对象

(键值对) key不受类型限制
const map = =new map();
map.set(true,1);
map.set(1,2);
map({},"ccc")
console.log(map) // Map(3){true=>1, 1>2, {}=>"ccc"}
map.has({}) //true
map.get(true) //2
map.delete({}) // Map(2){true=>1, 1>2}
//传数组
const map = =new map([[true,1],[1,2],[{},"ccc"]]);// Map(3){true=>1, 1>2, {}=>"ccc"}
复制代码

3.for of 和 for in

for(let key in obj){}
for(let value of obj){}

复制代码

4.find 和 findIndex

  • find 找到返回被找到的元素。找不到返回undefined
  • findIndex 找到返回被找到的元素索引,找不到返回-1
const findArr = [ 
    { name: '科比', no: '24' }, 
    { name: '罗斯', no: '1' }, 
    { name: '利拉德', no: '0' } 
]
const kobe = findArr.find(({ name })=> name = '科比');
const kebeIndex = findArr.findIndex(({ name })=> name = '科比');
kobe //{ name: '科比', no: '24' }
kebeIndex // 0
复制代码

5.解构赋值

对象

const obj = {
    name:"bs",
    age:22,
    gender:"女",
    doing:{
        morning:"fish",
        afternoon:"eating",
        evening:"sleep"
    }
}
const { name, age, genter } = obj;
//name age genter //"bs" 22 "女"
//结构重名
const { name: myName } = obj;
//myName // "bs"
const { doing: { evening }} = obj;
evening // sleep
复制代码

数组

const arr = [1,5,7];
const {1:a, 2:b, 0:c} = arr;
log a  b  c  //5  7   1
复制代码

6.class

  • 使用构造函数生成对象
class Person {
    constructore( name ) {
        //构造器
        this.name = name;
    }
    sayName() {
        console.log(this.name)
    }
}
const kobe = new Person("科比");
kobe.sayName() // 科比
复制代码
  • class = function
  • static 静态
  • extend 继承
class Animal {
    constructor(name,age) {
        this.name = name;
        this.age = age;
    }
}
class Cat extend Animal {
    say() {
        console.log(this.name, this.age)
    }
}
const cat = Cat("ketty",5);
cat.say() //ketty 5
复制代码

7.Array方法

7.1 Array.forEach()

  • 遍历数组
  • return undefined
let arr [1,2,3,4,5];
arr.forEach(item,index arr) {
    console.log(item,index,arr)
}
//
1 0 [1,2,3,4,5]
2 1 [1,2,3,4,5]
3 2 [1,2,3,4,5]
4 3 [1,2,3,4,5]
5 4 [1,2,3,4,5]
复制代码

7.2 Array.map

  • 不影响原数组
  • return 新数组
const arr1 = [1,2,3,4,5];
const arr2 = arr1.map((item, i, arr)=> i * item) 
arr2 // 0 2 6 12 20
复制代码

7.3 Array.filter

  • 条件过滤
  • return 新数组
const arr = [1,2,3,4,5];
const newArr = arr.filter(num=> num<4)
newArr // [1,2,3]
复制代码

7.4 Array.some

  • 检测数组中是否有满足要求的条件
  • return booloean
const arr = [1,2,3,4];
let res = arr.some(item=> item>2)
res //true
复制代码

7.5 Array.every

  • 检测数组中是否满足全部要求的条件
  • return booloean
let arr = [1,2,3,4,5];
let res = arr.every(item => item => 2); // false
let res2 = arr.every(item => item => 0); // true
复制代码

7.6 Array.reduce

  • 累加器
let arr = [1,2,3,4];
const res = arr.reduce((pre,naxt)=> {
    return pre + next;
},0)
res // 10
复制代码

7.7 Array.flat

  • 数组降维
const arr = [1,2,[3,4,[5,6]]];
console.log(arr.flat(Infinity)); // [1,2,3,4,5,6]
复制代码

7.8 Array.flatMap

  • map + flat
let arr = ["科比 詹姆斯 安东尼", "利拉德 罗斯 麦科勒姆"];
//  [ '科比', '詹姆斯', '安东尼', '利拉德', '罗斯', '麦科勒姆' ]
arr.flatMap(item => item.split(' '))
复制代码

8.箭头函数

  • 不能作为构造函数,不能使用new
  • 没有自己的this
  • 没有arguments对象
  • 无原型对象
const fn = name => {}

复制代码

9.Object.keys

  • 获取对象key集合
const obj ={
    name:"白苏",
    age:22,
    gender:"女"
}
const keys = Object.keys(obj)
keys // ['name','age','gender']
复制代码

10.模板字符串

const name = '白苏';
const age = 22;
consoloe.log(`${name}今年${age}岁啦`)
复制代码

11.数组的扩展运算符…

//拼接多个数组
let arr1 = [1,2,3];
let arr2 = [4,5,6];
let arr3 = [...arr1,...arr2]
console.log(arr3) // [1,2,3,4,5,6]
//作为参数
function fn(name,...params) {
    console.log(name,params)
}
fn('白苏',1,2,3); //白苏 [1,2,3]
复制代码

12.includes

  • return boolean
const arr = [1,2,NaN];
console.log(arr.includes(NaN));  // TRUE
console.log(arr.includes(NaN));  // -1
复制代码

13.求幂运算

const num = Math.pow(3,2); //9
//ES7
const num = 3 ** 2; //9
复制代码

14.Object.values

const obj = {
    1 : 'a',
    2 : 'b',
    3 : 'c',
}
console.log(Object.values(obj)) // [1,2,3]
复制代码

15.Object.entries()

    1 : 'a',
    2 : 'b',
    3 : 'c',
}
console.log(Object.entries(obj)) // [ [1,'a'],[2,'b'],[3,'c'] ]

复制代码

16.数据类型

  1. Number
  2. String
  3. Object
  4. Boolean
  5. Undefined
  6. Null
  7. BigInt (表示大于 2^53 - 1 的整数)
  8. Symbol (表示独一无二的值)

17. ?. 和 ??

  • ?. 可选链
const list = [];
if (list?.length) {
  console.log("true");
} else {
  console.log("false"); //false
}
复制代码
  • ?? 空位合并运算符

??||最大的区别是,在??这,只有undefined和null才算假值

    const a = 0 || "美女"; //美女
    const b = "" || "美女"; //美女
    const c = false || "美女"; //美女
    const d = undefined || "美女"; //美女
    const e = null || "美女"; //美女

    const a = 0 ?? "美女"; //0
    const b = "" ?? "美女"; //
    const c = false ?? "美女"; //false
    const d = undefined ?? "美女"; //美女
    const e = null ?? "美女"; //美女
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享