数组常用的几种方法

1.arr.findIndex 查找元素 返回值为符合条件的下标 或 -1

 2.arr.filter 过滤元素 返回一个新数组

 const arr = [
      { name: "小黑", age: 18,gender:'男' },
      { name: "小红", age: 22,gender:'女' },
      { name: "小绿", age: 18,gender:'女' },
      { name: "小蓝", age: 19,gender:'男' },
      { name: "小黄", age: 22,gender:'男' }
    ]
    /*  1.filter应用场景:用于筛选数组中满足条件的元素,返回筛选后的新数组  不影响元数组
        2.注意点:
          2.1. 回调函数执行次数  == 数组长度
                * 数组中有多少个元素,回调函数就会执行几次
          2.2. filter函数返回的新数组长度  !=  原数组长度
          2.3. 回调函数一定要return, 返回一个布尔类型值
              结果为true: 当前遍历的元素就会添加到新数组中
              结果为false:当前遍历的元素不会添加到新数组中
      */
   /*
    写法: 箭头函数   arr.filter((元素,下标)=>{return true/false})
         普通函数  arr.filter(function(元素,下标){{return true/false })
   */

  // 找出性别为男的元素
  //  完整写法
  const newArr=arr.filter((item,index)=>{
        if(item.gender==='男'){
          return true
        }else{
         return false
        }
     })
  console.log(newArr);   
  // 新数组为 [ { name: "小黑", age: 18,gender:'男' },{ name: "小蓝", age: 19,gender:'男' }, { name: "小黄", age: 22,gender:'男' }]

  // 简写  
  const  newArr1 = arr.filter(item=>item.gender==="女")  
  console.log(newArr1);   
  // 新数组为 [ { name: "小红", age: 22,gender:'女' },{ name: "小绿", age: 18,gender:'女' }]

3.arr.reduce 方法     

 const arr = [
      { name: "小黑", age: 18,gender:'男',results:90},
      { name: "小红", age: 22,gender:'女',results:95 },
      { name: "小绿", age: 18,gender:'女',results:88 },
      { name: "小蓝", age: 19,gender:'男',results:75 },
      { name: "小黄", age: 22,gender:'男',results:100 }
    ]
    /* 
        1.数组reduce方法   
            1.1 作用 : 遍历数组元素,为每一个元素执行一次回调函数
            1.2 语法 : arr.reduce( (sum,item,index)=>{ return sum + item },0)
                参数: 第一个是回调函数     第二个是回调函数里面的第一个形参sum的初始值 
                返回值: 最后一次的sum的值
            1.3 应用场景 : 数组求和/平均值等等
            1.4 注意点:最好给一个初始值,避免空数组报错
        */
        
         // 数组求和
         //sum : 初始值,默认为数组第一个元素              
        //item : 数组得每一个元素,默认为数组第二个元素
        // index : 当前item的下标,默认为1
        // 如果给sum设置初始值  value就会从数组的一个元素开始  index也会从0开始 
        
        // 求 数组里面性别
      const  s=arr.reduce((sum,item,index)=>{
         if(item.gender==='男'){
            return  sum+item.results  //或sum+=item.results   但都是一样的
         }
        // if外面也得写return sum  因为reduce 是遍历数组的所有元素 
        // 如果当前元素不满足判断,没有进入if  不返回sum的话 就会默认返回undefined   此时sum的值就为undefined,
        // 下次满足条件时   返回的 return item.results+sum 就会是NaN   因为undefined+数字就是NaN了
         return sum 
      },0)
      console.log(s); //结果是265

4.arr.map方法

 const arr = [
      { name: "小黑", age: 18,gender:'男',results:90},
      { name: "小红", age: 22,gender:'女',results:95 },
      { name: "小绿", age: 18,gender:'女',results:88 },
      { name: "小蓝", age: 19,gender:'男',results:75 },
      { name: "小黄", age: 22,gender:'男',results:100 }
    ]
    /* 
        1.数组map方法   
            1.1 作用 : 遍历每一个元素,并对每一个元素做对应的处理,返回一个新数组
            1.2 语法 : arr.map((item,index)=>{ return item  },)
            2.注意点:
            2.1. 回调函数执行次数  == 数组长度
                * 数组中有多少个元素,回调函数就会执行几次
            2.2. map函数返回的新数组长度  ==  原数组长度
            2.3. 回调函数中一定要return,返回的是当前遍历的元素值
                * 如果不return,新数组中每一个元素都变成了undefined
        */
         const newarr= arr.map((item,index)=>{
          //给数组里面的对象加一个属性名为id
           return {...item,id:index+1}     //...为展开运算符     遍历出所有元素
        })
      console.log(newarr);

5.arr.foreach()方法

  const arr = [
      { name: "小黑", age: 18,gender:'男',results:90},
      { name: "小红", age: 22,gender:'女',results:95 },
      { name: "小绿", age: 18,gender:'女',results:88 },
      { name: "小蓝", age: 19,gender:'男',results:75 },
      { name: "小黄", age: 22,gender:'男',results:100 }
    ]
    /* 

        1.forEach应用场景:用于遍历数组,相当于for循环另一种写法
        2.注意点:
            2.1. 回调函数执行次数  == 数组长度
                 数组中有多少个元素,回调函数就会执行几次
            2.2. forEach函数没有返回值    
            2.3. 回调函数不需要return
            	 就算手动return,也无法停止函数             
        */
         arr.forEach((item,index)=>{
        console.log(`${item.name}的成绩:${item.results}`)
        })

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值