js中常用方法

js中常用方法

reduce()

语法:arr.reduce(function(prev,cur,index,arr){

}, init);

可以看到,reduce方法接收一个回调函数

其中:prev表示上一次回调的结果;cur表示当前处理的元素;index当前处理的索引;arr当前数组;init初始值

实例

    //  var arr =[1,2,3,4,5,2,9];
	//    1. 实现数组元素之和
        let  sum = arr.reduce(function (prev,curr,index,arr){
            //传入了初始值0,所以开始时prev的值为0,cur的值为数组第一项1,相加之后返回值为1作为下一轮回调的prev值,然后再				继续与下一个数组项相加,以此类推,直至完成所有数组项的和并返回。
            return prev + curr;
        },0)
        console.log(sum) // 26
	

        //    2. 数组最大值
        let  max = arr.reduce(function (prev,curr,index,arr){
            return Math.max(prev,curr);
        })
        console.log(max) // 9
		//由于没有初始值,所以prev的值为数组中的第一项也就是1,curr为第二项2,两个比较,将最大结果作为回调,进行下一轮的比较


        //    3. 数组去重
        /*
        思路:
            1. 初始化一个空数组,也就是prev=[]
            2.将需要去重处理的数组中的第1项在初始化数组中查找,
                如果找不到(空数组中肯定找不到),就将该项添加到初始化数组中
            3.将需要去重处理的数组中的第2项在初始化数组中查找,
                如果找不到,就将该项继续添加到初始化数组中
         */
        let  result = arr.reduce(function (prev,curr,index,arr){
            //-1找不到,添加到数组中
            prev.indexOf(curr)===-1&&prev.push(curr)
            return prev;
        },[])
        console.log(result) // [1, 2, 3, 4, 5, 9]

    //    4.字符串中字母出现的次数
        /*
        思路:
            1. 先将字符串化成数组形式
            2.利用三元表达式,将保存到一个字典中,以字母作为键,次数作为值
            3.字典中存在了+1,否则该字符次数为1
         */
        const str = 'asdfghjwsdfghjasdfghkjhgfdsyhb';
        let result = str.split('').reduce(function (prev,curr) {
             prev[curr]?prev[curr]++ : prev[curr]=1;
             return prev
        },{})
        console.log(JSON.stringify(result,null,2))
        /*
                        {
                  "a": 2,
                  "s": 4,
                  "d": 4,
                  "f": 4,
                  "g": 4,
                  "h": 5,
                  "j": 3,
                  "w": 1,
                  "k": 1,
                  "y": 1,
                  "b": 1
                }
         */

map()方法

用于遍历数组,返回处理之后的新数组

        let arr = [1,2,3,4,5,2,6,9]
        let result = arr.map(function (item,index,array) {
            return item*2
        })
        /*
            该方法与forEach()的功能类似,只不过map()具有返回值,
            会返回一个新的数组,这样处理数组后也不会影响到原有数组。
         */
        console.log(result) //[2, 4, 6, 8, 10, 4, 12, 18]

every()方法

用于判断数组中的每一项元素是否都满足条件,返回一个布尔值

        let arr = [1,2,3,4,5,2,6,9]
        let result = arr.every(function (item,index,array) {
            return item>2
        })
        /*
            可以看到,示例中是要判断数组arr中的元素是否都大于2
            ,很显然不是,所以该方法最终返回false。
         */
        console.log(result) //false

some()方法

用于判断数组中的是否存在满足条件的元素,返回一个布尔值

        let arr = [1,2,3,4,5,2,6,9]
        let result = arr.some(function (item,index,array) {
            return item>2
        })
        /*
            可以看到,示例中是要判断数组arr中的元素是否存在大于2
            ,很显然存在,所以该方法最终返回true。
         */
        console.log(result) //true

filter()方法

用于筛选数组中满足条件的元素,返回一个筛选后的新数组

        let arr = [1,2,3,4,5,2,6,9]
        let result = arr.filter(function (item,index,array) {
            return item>2
        })
        /*
            可以看到,示例中是要判断数组arr中的元素大于2并返回
         */
        console.log(result) //[3, 4, 5, 6, 9]

以上五大方法除了传递一个匿名函数作为参数之外,还可以传第二个参数,该参数用于指定匿名函数内的this指向,例如:

        let arr = [1,2,3,4,5,2,6,9]
        let result = arr.filter(function (item,index,array) {
            console.log(this)//window
        })
        let arr = [1,2,3,4,5,2,6,9]
        let result = arr.filter(function (item,index,array) {
            console.log(this)//[1, 2, 3, 4, 5, 2, 6, 9]
        },arr)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值