map, forEach, filter, every, reduce, some 的基本使用

我们先来创建一个数组,之后的方法都是建立在这个数组上的

var arr = [
        { id: 1, name: 'lili', gender: "fmale", class: "six" },
        { id: 2, name: 'xixi', gender: "fmale", class: "five" },
        { id: 3, name: 'ximing', gender: "male", class: "six" },
        { id: 4, name: 'hihi', gender: "fmale", class: "three" },
        { id: 5, name: 'baibai', gender: "male", class: "one" }
    ];

forEach

**作用:**和 for 循环一样,是用来遍历数组的,数组有几项,它就遍历多少次
语法:arr.forEach( function ( item, index, arr){ “js 语句” })
解释: forEach 是一个方法,必须传一个匿名函数作为实参,而这个匿名函数也有三个参数
第一个参数(item):数组中的每一项
第二个参数(index):数组的下标
第三个参数(arr):就是这个数组
里面的变量可以根据自己的习惯去定义

arr.forEach(function(item, index, arr){
        console.log(item,index,arr);//object(每一项就是一个对象),下标,arr
    })

后面两个参数也可以不写,但第几个参数代表什么是固定的,不是说你把 index 放在第一个参数的位置上,第一个参数就代表元素下标了,它还是表示数组中的每一项

arr.forEach(function(item, index, arr){
		//可以进行操作
        item.id = item.id - 1;
        console.log(item.id);//0,1,2,3,4
    })
    //如果省略后面的参数,第一个参数还是代表数组中的每一项,并且我们可以用箭头函数
    arr.forEach(item =>{
        
        console.log(item.name);//lili,xixi,ximing,hihi,baibai

    })

map

作用:和 forEach 类似,不过他可以对数组的每一项进行操作,并返回一个新的数组
语法:arr.map( function ( item, index, arr){ return 值})
解释: forEach 是一个方法,必须传一个匿名函数作为实参,而这个匿名函数也有三个参数,后面两个参数也可以不写
第一个参数(item):数组中的每一项
第二个参数(index):数组的下标
第三个参数(arr):就是这个数组
首先我们来看下面这个例子

var newArr = arr.map(function(item, index, arr){

        return index;//基本数据类型
    })
    console.log(arr);//基本数据类型,不会改变原数组
    console.log(newArr);//[0,1,2,3,4]

通过这个例子我们可以知道 map 方法的一些特性
1:不会改变原数组,而是返回一个新的数组(但如果是复杂数据类型就会改变原数组)
2:return 后面的值就是我们数组中每一项新的值,return 后面不管是什么,他都将作为新数组中的每一项而数组,例如上面,return 了这个数组的下标,数组的中每一项就变成了下标
那我们如何改变每一项中的某个属性从而改变数组呢,我们可以在返回之前,每一项进行操作,然后在返回每一项,我们看下下面的例子就知道了

//我想把每一项中的id值都加10
var newArr = arr.map(function(item){
          item.id = item.id + 10;// 先操作
          return item;//返回的是一整个对象
    })
    console.log(arr);//会改变原数组
    console.log(newArr);//一个数组,并且id也改变了

filter

作用:按照我们的条件筛选数组,把原数组中满足条件的筛选出来,并返回一个新的数组
语法:arr.filter( function ( item, index, arr){ return 条件 })
解释: filter 是一个方法,必须传一个匿名函数作为实参,而这个匿名函数也有三个参数,后面两个参数也可以不写
第一个参数(item):数组中的每一项
第二个参数(index):数组的下标
第三个参数(arr):就是这个数组

var newArr = arr.filter(function(item, index){
        return index > 2;
    })
    console.log(arr);//不会改变原数组
    console.log(newArr);//下标大于2 的两项

var newArr = arr.filter(function(item, index){
        return item.id > 2;
    })
    console.log(arr);//原数组
    console.log(newArr);//id大于2 的两项

some

传参与上面三种相同
作用:执行完成返回一个布尔值。执行匿名函数内的代码时,返回一个boolean值判断真假,若不是布尔值返回给some。当所有返回值return 有一个为真(true),返回true,全为假(false)返回假(false)

var newArr = arr.some((item,index)=>{
        return index > 2;//有符合条件的则返回 true
    })
    console.log(arr);//原数组
    console.log(newArr);//true
    
var newArr = arr.some((item,index)=>{
        return index > 5;//没有符合条件的则返回 false
    })
    console.log(arr);//原数组
    console.log(newArr);//false

every

形式与 forEach 相同
作用:遍历一个数组,如果数组的全部元素都为 true ,则返回 true ,否则返回 false

var newArr = arr.every((item)=>{
        return item.id > 0;//每一项的id都大于0
    })
console.log(newArr);//true

    var newArr2 = arr.every((item)=>{
        return item.gender === "fmale";//不是每个gender 的值都为fmale
    })
    console.log(newArr2);//false

reduce:累加的一个 api

形式与 forEach 就有点不同
作用
语法:arr.reduce( function ( prev, next ){ return 值}, init)
解释: 它要传两个参数,第一个参数:匿名函数 ,,第二个参数:初始值
匿名函数中的第一个参数:上一次累加的结果
第二个参数:数组中的每一项
我们用一个例子来说明一下

//初始值为 0,开始的时候:prev = 0,next.id = 1;两者相加为 1 (因为next代表了数组中的每一项)
//接下来,把 上一次的和给 prev,prev = 1, next.id = 2;两者进行相加为 3
//把 3 赋给 prev ,依次进行下去
var a = arr.reduce((prev, next)=>{
        return prev + next.id;
    },0)
    console.log(a);//15

总结

filter, every, reduce, some 都不会改变原数组
如果不需要返回值的话,可以用 forEach ,如果要筛选的话可以用 filter,我们在做全选框的时候可以用 every,在做累加的时候,可以用 reduce。
在没有特殊情况下,里面的 this 均指向 window
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值