js高级中数组的方法

前言:

        在学习js高级的时候呢会学习好几种关于数组的方法,我在这列举几种,大概介绍一下用法和特点.每个方法的语法都类似


一.forEach()

forEach迭代(遍历)数组 该方法没有返回值,会修改原数组内容

作用是给每一个数组元素调用一个方法;遍历数组中的每一个元素,不会因为return和break而停下循环遍历

        let arr = new Array(1, 2, 3, 4, 9, 4, 3, 5);
        累加
        let num = 0;
        arr.forEach(function(value, index, array) {
            console.log('每个数组元素' + value);
            console.log('每个数组元素的索引号' + index);
            console.log('数组本身' + array);
            num += value;
        })
        console.log(num);

打印结果截取一部分


二. filter()方法

filter()方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素,

主要用于筛选数组,该方法不会修改原来数组的值

        value是arr数组中的每一个值,index为下标
        let newArr = arr.filter(function(value, index) {
            return value >= 3;
        });
        console.log(newArr);

输出结果如下


 三.some()

用于检测数组中的元素是否满足指定条件,既查找数组中是否有满足条件的元素

注意它返回值是布尔值,如果查找到这个元素,就返回true,如果查找不到就返回false

如果找到第一个满足条件的元素,则终止循环不再继续查找

        // array.some(function(currentValue,index,arr))
        // currentValue:数组当前项的值
        // index:数组当前的索引
        // arr:数组对象本身
        查找数组中是否有大于或等于20这个值
        let arr = new Array(10, 30, 4);
        let flag = arr.some(function (value) {
            return value >= 20;
        });
        console.log(flag);
        
        查找数组中是否有'甘雨'这个值
        let arr1 = new Array('甘雨', '胡桃', '雷神', '可莉', '迪奥娜');
        let myWife = arr1.some(function (value) {
            return '甘雨' === '甘雨';
        });
        console.log(myWife);

输出结果如下


四.every()

every() 方法:检测某数组的所有元素是否都大于等于某数

与some不同,some是数组中有一个值满足条件就返回true,而这个是要所有成员满足才返回true

        let arr = new Array(10, 30, 4);
        // 这里只传一个值, 就是指当前元素了
        判断arr数组中是否每一个值都大于10
        let flag = arr.every((item) => {
            return item > 10;
        });
        console.log(flag);//false

五.map()

map() 方法:原数组中的每个元素调用一个指定方法后,返回的值组成的新数组。

按照某种映射关系 产生一个新数组        map有地图的意思也有映射的意思

特点:不能停下来

         let arr3 = [{ name: '甘雨', age: 18 }, { name: '胡桃', age: 16 }, { name: '可莉', age: 8 }]
        // 希望去处理一下这和个arr数组 拿到的数组元素去掉年龄只要名字
        let arrNew = arr3.map(item => {
            return { name: item.name }
        });
        console.log(arrNew);

输出结果如下


六.find和findIndex

find方法:   查找符合条件的第一个元素 找到了就返回这个元素没找到就返回undefined

findIndex方法:  查找符合条件的第一个元素 找到了就返回这个元素的下标 没找到返回-1

从字面上来看的话,find本身就有查找的意思,findIndex就是查找索引了

        let arr1 = new Array('甘雨', '胡桃', '雷神', '可莉', '迪奥娜');
        let flag = arr1.find((item) => {
            return item === '可莉'
        })
        console.log(flag);

        console.log('=====================');
        let flag2 = arr1.findIndex((item) => {
            return item === '可莉'
        })
        console.log(flag2);

输出结果如下

 七.reduce()

一般用来求和

        // reduce方法
        let arr = [20, 30, 40];
        // 后面这个0的话就是累加的初始值,也就是sum的值  当然也可以不写
        // item代表的就是arr数组中的每一项了
        let res = arr.reduce((sum, item) => {
            console.log(sum, item);
            return sum + item;
        }, 0);
        console.log(res);

输出结果如下

 


每一个方法都会遍历数组

注意:其中forEach()会修改原数组中的内容;  filter()会返回一个新数组;  some()和every()会返回布尔值;  find返回元素,findIndex返回下标,find没找到返回undefined,findIndex没找到返回-1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Motion_zq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值