第一部分:数组

一.数组遍历

(1)数组.reduce遍历(经典案例:求和)(里面函数后面不要忘记加0了)

*注意点:reduce((形参1,形参2,形参3)=>{  return 形参1+形参2  },0),需要接收返回值。

let arr =[20,30,40,50]
//自己参悟,不注释了
 let sum =arr.reduce((sum,value,index)=>{
  //sum是上一次回调的value的值,value是每一次遍历数组的值,
    index数组下标
     console.log(sum,value,index)
     return sum+value
  },0)
 // sum为最大值
     console.log(sum)

(2)数组.filter遍历(筛选数组)

*注意点:filter((形参1,形参2)=>{ i f ( ){ return true } }),需要接收返回值。

语法特点:

2.1:return ture :满足筛选条件,当前元素放入新数组

2.2:return false:不满足筛选条件,当前元素不放入新数组中

(案例:筛选数组中的偶数)

完整写法

let res = arr.filter((value,index)=>{
//value为每个数组的遍历,index为数组下标
   if(value%2==0){
        return true
      }
    })

(3) 数组.map遍历(修改数组,返回一个新数组)

*注意点:map((形参1,形参2)=>{ return 修改后的数组值 }),需要接收返回值。

(案例:让数组中每个数值*2)

let arr =[20,37,83,29]
  //第一个value为数组元素,第二个index为数组下标
  let res =arr.map(function(value,index){
    return value*2
  })
   console.log(res)

(4)数组.some遍历( 判断数组中是否有满足条件的元素( 逻辑或|| ) )

        数组.every遍历(判断数组中是否所有的元素都满足条件(逻辑与&&) )

*注意点:eyery ((形参1,形参2)=>{ return true(继续)}),需要接收返回值。

 回调函数内部return的作用

对于every逻辑或  (return true :循环继续 )(找到满足条件的继续找,只要有一个不满足结束)

判断数组中是否全部为正数
let arr =[20,29,394,71,1]
   let res =arr.every((item,index)=>{
     if(item>0){
 //只有当数组中的元素item是正数,才会执行if判断retrun才能往回调
         return true
      }
   })
  console.log(res)

对于some 逻辑与(return true:循环结束)(只要找到满足条件的元素即可)

*注意点:some((形参1,形参2)=>{ return true(结束) }),需要接收返回值。

//需求:判断数组中有没有负数
  let arr =[-10,283,474,382,273]
  let res=arr.some((value,index)=>{
    if(value<0){
      return true
    }
  })
  console.log(res)

 (5)数组.forEach遍历(代替for循环)(无返回值)

let arr =[10,28,37,47,30.38]
    /*
    1.forEach作用与场景:遍历数组
      不加return
    */
   arr.forEach((value,index)=>console.log(value,index))

(6)arr.findIndex((value,index)=>{return 比较数据}) 用来查询数组中是否有符合条件的值,有则返回该数组的下标,没有则返回-1

let arr =[10,20,30,40,50]
let i = arr.findIndex((value,index)=>{return value>20})
console.log(2)

 二 .内置构造函数Set给数组去重(new Set)

(案例:清除数组中重复的数据)

let arr=[10,29,28,30,293,29]
    //(1)声明Set,把数组类型重复的数据转换为set类型
    let set = new Set(arr)
    //(2)把set转换Array
    let newArr =[...set]
    console.log(newArr)
    //一行代码实现数组去重
    let abc = [...new Set(arr)]
    console.log(abc)

三.展开运算符(...数组)

    作用:类似于对象遍历

(案例1)连接数组

let arr1=[10,20,30,40,20]
    let arr2=[20,39,48,58,27]
    //连接数组
    arr1.push(...arr2)
    console.log(arr1)

(案例2)连接对象

//连接对象
    let obj={
      name:'张三'
    }
    let obj1={
      name1:'1',
      ...obj
    }
    console.log(obj1)

(案例3)求最大值

let arr1=[10,20,30,40,20]
    let arr2=[20,39,48,58,27]
    //求最大值
    let receive =Math.max(...arr1,...arr2)
    console.log(receive)//58

四:数组解构

/*把数组元素赋值给变量*/
    let arr=[10,20,30]
    let [n1,n2,n3,n4]=arr
    
    console.log(n1,n2,n3,n4)

    //相当于是把变量的值赋值给数组
    let num1 =1
    let num2=2
    let num3=3
    let arr1=[num1,num2,num3]

对象解构

(1)把对象的属性值 赋值给 变量

    let  { name,age,sex } =  obj

(2)把变量的值赋值给对象

     let obj ={ name,age,sex }

//1.把对象的属性值 赋值给 变量
    let obj ={
      name:'张三',
      age:'23',
      sex:'男',
    }
    let {name,age,sex} = obj

    console.log(name)

    //(2)把变量的值赋值给对象
    let a = 10
    let abc ={
      name,
      age,
      num:a
    }
    console.log(abc)

第二部分:对象遍历

静态方法(Object.values(对象名))

返回值是一个数组,会存储对象的每一个属性值

let arr =Object.values(person)
 console.log(arr)

Object.keys(对象名)

返回的是一个数组,会存储对象的每一个属性名

let arr =Object.keys(person)
 console.log(arr)