数组方法every,some,map,reduce

every:全部满足条件就返回true,否则返回false,只要不满足条件,就不再继续遍历。

传参:可传两个参数第一个是function(ele, index, self)必传但是ele,index,self看情况传。ele代表数组的某一项,index代表索引,self代表数组本身。第二个参数改变this指向,可传可不传

some:有一个满足条件就返回true,否则false,就算最后返回false,也会遍历完整个数组

举例

var demo = [
                {name : '重庆', 
                 NO : 1,
                 city : '重庆'
                },
                {name : '北京', 
                 NO : 2,
                 city : '北京'
                },
                {name : '四川', 
                 NO : 3,
                 city : '成都'
                },
            ]

            var flag = demo.every(function(ele, index, self){
                console.log(ele, index, self);
                return ele.NO > 0;
            })
            console.log(flag);

在这里插入图片描述

var flag = demo.every(function(ele, index, self){
                console.log(ele, index, self);
                return ele.NO > 2;
            })
            console.log(flag);

在这里插入图片描述

some

var flag = demo.some(function(ele, index, self){
                console.log(ele, index, self);
                return ele.NO > 2;
            })
            console.log(flag);

在这里插入图片描述

重写every方法

Array.prototype.myEvery = function (func) {
            var _arr = this,
                len = _arr.length,
                param2 = arguments[1] || window,
                flag = true;
            for (var i = 0; i < len; i++){
                if (!func.apply(param2, [_arr[i], i, _arr])){
                    flag = false;
                    break;
                }
            }
            return flag;
        }

试试效果:

var flag = demo.myEvery(function(ele, index, self) {
        console.log(ele, index, self);
        return ele.NO > 0;
      });
      console.log(flag);

在这里插入图片描述

map:传参和意义和上面一样,映射数组中的每一项,返回一个新数组,不要返回引用值,会导致原数组被修改

var demo = [
        { name: "重庆", NO: 1, city: "重庆" },
        { name: "北京", NO: 2, city: "北京" },
        { name: "四川", NO: 3, city: "成都" }
      ];
var result =  demo.map(function(ele, index, self){
            if(ele.NO != 0){
                return ele.name + 'good';
            }else{
                return;
            }
        })
        console.log(result);      

在这里插入图片描述

重写map方法

Array.prototype.myMap = function (func) {
            var _arr = this,
                len = _arr.length,
                param2 = arguments[1] || window,
                newArr = [];
            for (var i = 0; i< len; i++){
                newArr.push( func.apply(param2, [_arr[i]], i, _arr));//为了防止改变原数组 最好使用深度克隆
            }
            return newArr;
        };
        
var result =  demo.myMap(function(ele, index, self){
            if(ele.NO != 0){
                return ele.name + 'good';
            }else{
                return;
            }
        })
        console.log(result);

在这里插入图片描述

reduce:两个参数都必须,第一个是函数function,参数分别是prevValue(初始值),ele,index,self。第二个参数是initValue(初始化值)。执行的时候initvalue就是prevValue的值,每次执行都需要返回一个值,作为下一次prevValue,相当于接力。

举例理解

var demo = [
        { name: "重庆", NO: 1, city: "重庆" },
        { name: "北京", NO: 2, city: "北京" },
        { name: "四川", NO: 3, city: "成都" }
      ];
        var initValue = 'good';
        var result = demo.reduce(function(prevValue, ele, index, self){
            ele.NO += 1;
            console.log(prevValue, ele, index, self);
            return prevValue;
        }, initValue);

在这里插入图片描述
这里的good就是prevValue,因为每次都返回prevValue,所以每次都输出good

重写reduce方法

Array.prototype.myReduce = function (func, initValue) {
            var _arr = this,
                len = _arr.length,
                param2 = arguments[2] || window;
                for (var i = 0; i < len; i++){
                    initValue = func.apply(param2, [initValue, _arr[i], i, _arr]);
                }
                return initValue;
        };
 var demo = [
        { name: "重庆", NO: 1, city: "重庆" },
        { name: "北京", NO: 2, city: "北京" },
        { name: "四川", NO: 3, city: "成都" }
      ];
        var initValue = 'good';
        var result = demo.myReduce(function(prevValue, ele, index, self){
            ele.NO += 1;
            console.log(prevValue, ele, index, self);
            return prevValue;
        }, initValue);

在这里插入图片描述
数组方法filter
数组方法forEach

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值