数组的迭代

目录

map()

filter()过滤器

forEach遍历数组

some()

every()

 findindex()

reduce()


map()

映射数组,将原数组的每一项元素按照规则进行改变,将所有改变的结果组合成一个新数组

  • 不改变原数组
  • 返回值:映射后的新数组
  • 参数:function
    • item:每一项元素

参数解释

  • 每次遍历都会执行一次匿名函数,每一项元素进行相应的改变
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // map应用场景:利用某种规则映射得到一个新数组
        let arr = [1, 2, 3, 4]

        // 每个元素加一  使用箭头函数
        let arr1 = arr.map((value) => {
            return value + 1
        })
        console.log(arr1);
        
        // 每个元素乘二
        let arr2=arr.map((value)=>{
            return value*2
        })
        console.log(arr2);
    </script>
</body>

</html>

filter()过滤器

过滤数组,把符合规则的元素组合成一个新数组

  • 不改变原数组
  • 返回值:过滤出来的新数组
  • 参数:function
    • item:每一项元素

参数解释

  • 每次遍历都会执行一次匿名函数,其中函数返回值为 true 的元素,也就是符合条件的元素,就会被过滤出来,放到新数组中
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let arr=[10,20,30,40,50,13]
        
        let sun=[]
        let Arr=arr.filter((value)=>{
            // 筛选条件
            return value>10
        })
        console.log(Arr);

        // 筛选出偶数
        let Arr1=arr.filter((value)=>{
            // 取模2等于0
            return value%2==0
        })
        console.log(Arr1);
    </script>
    
</body>
</html>

forEach遍历数组

遍历数组,每遍历一次就执行一次传递的匿名函数

  • 匿名函数中有三个可选参数,分别是 item、index、array
    • item 每一项元素
    • index 当前被遍历元素的索引值
    • array 该数组本身

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let arr=[11,52,47,88,76,84]
        let sum=0;
        //    for循环
        //    for(let i=0;i<arr.length;i++){
        //     sun += arr[i]
        // }
        // console.log(sum);
        arr.forEach((value)=>{
            sum +=value
        })
        console.log(sum);
     

    </script>
</body>
</html>

some()

遍历数组,判断元素是否符合判断条件,若有一个符合就返回 true,若都不符合则返回 false,匿名函数的返回值就是判断条件

  • 不改变原数组
  • 返回值:布尔值 true || false
  • 参数:function (匿名函数)
  • item:每一项元素

参数解释

  • 每次遍历都会执行一次匿名函数,如果有一个匿名函数的返回值为 true,即有一个符合条件,那么 some()会返回 true
  • 若都为 false,才会返回 false
<script>
        let arr=[15,78,97,78784,1112,54,-7]

        // 判断数组是否有负数 有负数是打印是true  没有负数打印的是false
        let arr1=arr.some((item)=>{
            return item>0
        })
        console.log(arr1);

every()

遍历数组,判断元素是否符合判断条件,如果都符合则返回 true,否则返回 false,匿名函数的返回值就是判断条件

  • 不改变原数组
  • 返回值:布尔值 true || false
  • 参数:function (匿名函数)
  • item:每一项元素

参数解释

  • 每次遍历都会执行一次匿名函数,如果所有匿名函数的返回值都为true,也就是所有元素都符合判断条件,那么 every()会返回 true
  • 只要有一个为 false,即只要有一个不符合,就会返回 false
     

 let arr2=[78,98,74,51,37]
        // 判断所有的元素是否都是正数 当所有的元素都符合条件是返回值是true 只要有一个不符合条件返回值为false
        let arr3=arr2.every((item)=>{
            return item>0
        })
        console.log(arr3);

 findindex()

获取符合条件的第一个元素位置(下标)。 返回值:符合则返回元素下标,不符合则返回-1。

   let arr = [
            { name: '周万方', age: 18 },
            { naem: '战神', age: 20 },
            { name: '易打', age: 2 }
        ]
        let res = arr.findIndex((item) => {
            return item.age > 18
        })
        console.log(res);

reduce()

迭代数组

  • 不改变原数组
  • 返回值:迭代完成的结果
  • 参数:function (匿名函数)、initial (初始值)
  • prev:上一次遍历函数的返回值 (上一次迭代结果)
  • item:当前元素
  • index:当前索引值
  • array:原数组本身

参数解释

  • initial 为迭代的初始值,可以理解为第一次迭代时 prev 的值
  • 如果 initial 不传,则默认从索引为 1 的元素开始遍历,且第一次迭代时 prev 默认为第 0 项元素

        let arr1=[45,68,78,99]
        let res1=arr1.reduce((sum,value)=>{
            return sum +=value
        },0)
        console.log(res1);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值