小和尚学习-数组常用API

在这里插入图片描述

本来无望的事,大胆尝试,往往能成功。——莎士比亚

一. forEach

数组遍历

  • callback:遍历回调事件
    • element:遍历元素
    • index:遍历元素索引
    • self:遍历数组本身
  • target:callback里的this指向,默认为window
// 数据
var personArr = [
    { name: '王刚', src: './src/img/3.png', des: '脊椎不好', sex: 'm' },
    { name: '刘颖', src: './src/img/5.png', des: '我是谁', sex: 'f' },
    { name: '王莹莹', src: './src/img/4.png', des: '我很好看', sex: 'f' },
    { name: '刘洪波', src: './src/img/1.png', des: '你没有见过的人', sex: 'm' },
    { name: '刘飞', src: './src/img/2.png', des: '挂壁你', sex: 'm' },
];

// forEach模拟
Array.prototype.myForEach = function (callback) {
    var _arr = this; // 指向方法调用者(被遍历的数组)
    var len = _arr.length; // 数组长度
    var param2 = arguments[1] || window; // callback函数里的this

    for (var i = 0; i < len; i++) {
        callback.apply(param2, [_arr[i], i, _arr]);
    }
};

// forEach遍历
personArr.myForEach(function (item, index, self) {
    // 此时的this,为li伪数组
    this[index].innerHTML = item.name;
}, document.getElementsByTagName('li'));

二. Filter

过滤数组元素,将符合条件的元素组成新数组返回

  • callback:遍历回调事件
    • element:遍历元素
    • index:遍历元素索引
    • self:遍历数组本身
  • target:callback里的this指向,默认为window
// filter模拟
Array.prototype.myFilter = function (callback) {
    var _arr = this; // 指向方法调用者(被遍历的数组)
    var len = _arr.length; // 数组长度
    var param2 = arguments[1] || window; // callback函数里的this
    var newArr = []; // 存放符合条件的元素

    for (var i = 0; i < len; i++) {
        callback.apply(param2, [_arr[i], i, _arr]) ? newArr.push(_arr[i]) : '';
    }

    return newArr;
};

// filter过滤
var newArr = personArr.myFilter(function (item, index, self) {
    // 过滤出性别为女的人
    if (item.sex === 'female') {
        return true;
    } else {
        return false;
    }
});

console.log(newArr);

三. Map

映射数组元素,返回元素集中化操作后,组成的新数组

  • callback:遍历回调事件
    • element:遍历元素
    • index:遍历元素索引
    • self:遍历数组本身
  • target:callback里的this指向,默认为window
// map模拟
Array.prototype.myMap = function (callback) {
    var _arr = this; // 指向方法调用者(被遍历的数组)
    var len = _arr.length; // 数组长度
    var param2 = arguments[1] || window; // callback函数里的this
    var newArr = []; // 存放集中化操作后的元素

    for (var i = 0; i < len; i++) {
        newArr.push(callback.apply(param2, [_arr[i], i, _arr]));
    }

    return newArr;
};

// map映射
var newArr = personArr.myMap(function (item, index, self) {
    // 将每个人的名字加上索引值
    item.name += index;
    return item;
});

console.log(newArr);

四. Every

当且仅当数组元素全部符合条件,返回true;反之,返回false

  • callback:遍历回调事件
    • element:遍历元素
    • index:遍历元素索引
    • self:遍历数组本身
  • target:callback里的this指向,默认为window
// every模拟
Array.prototype.myEvery = function (callback) {
    var _arr = this;
    var len = _arr.length;
    var param2 = arguments[1] || window;
    var flag = true;

    for (var i = 0; i < len; i++) {
        if (!callback.apply(param2, [_arr[i], i, _arr])) {
            flag = false;
            break;
        }
    }

    return flag;
};

// every
var flag = personArr.every(function (item, index, self) {
    return item.age >= 18; // 判断每个人的年龄是否都大于18
});

console.log(flag);

五. Some

只要数组元素有一个符合条件,返回true;反之,返回false

  • callback:遍历回调事件
    • element:遍历元素
    • index:遍历元素索引
    • self:遍历数组本身
  • target:callback里的this指向,默认为window
// some模拟
Array.prototype.mySome = function (callback) {
    var _arr = this;
    var len = _arr.length;
    var param2 = arguments[1] || window;
    var flag = false;

    for (var i = 0; i < len; i++) {
        if (callback.apply(param2, [_arr[i], i, _arr])) {
            flag = true;
            break;
        }
    }

    return flag;
};

// some
var flag = personArr.mySome(function (item, index, self) {
    return item.age > 17; // 判断每个人的年龄是否都大于17
});

console.log(flag);

六. Reduce

返回数组元素累计

  • callback:遍历回调事件
    • prevElement:上一次累计值
    • element:遍历元素
    • index:遍历元素索引
    • self:遍历数组本身
  • initialValue:累计初始值
// reduce模拟
Array.prototype.myReduce = function (callback, initialValue) {
    var _arr = this;
    var len = _arr.length;
    var parm2 = arguments[2] || window; // 这个是自己加的,真实数组 reduce 没有这个参数

    for (var i = 0; i < len; i++) {
        initialValue = callback.apply(parm2, [initialValue, _arr[i], i, _arr]);
    }

    return initialValue;
};

// reduce
var newValue = [1, 2, 3, 4].myReduce(function (prevElement, currentElement, index, self) {
    prevElement += currentElement;
    return prevElement;
}, '');

console.log(newValue); // '1234'

七. ReduceRight

返回数组元素累计(从右 → \rightarrow 左遍历)

  • callback:遍历回调事件
    • prevElement:上一次累计值
    • element:遍历元素
    • index:遍历元素索引
    • self:遍历数组本身
  • initialValue:累计初始值
// reduceRight模拟
Array.prototype.myReduceRight = function (callback, initialValue) {
    var _arr = this;
    var len = _arr.length;
    var param2 = arguments[2] || window;

    for (var i = len - 1; i >= 0; i--) {
        initialValue = callback.apply(param2, [initialValue, _arr[i], i, _arr]);
    }

    return initialValue;
};

// reduceRight
var newValue = [1, 2, 3, 4].myReduceRight(function (prevElement, currentElement, index, self) {
    prevElement += currentElement;
    return prevElement;
}, '');

console.log(newValue); // '4321'

提示:对于[1, 2, 3, ,1]这样数组没有填值的情况,以上所举API会忽略空值处,相当于[1, 2, 3, 1]这种数组调用API

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
辽B代驾管理系统对代驾订单管理、用户咨询管理、代驾订单评价管理、代驾订单投诉管理、字典管理、论坛管理、公告管理、新闻信息管理、司机管理、用户管理、管理员管理等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择小程序模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行辽B代驾管理系统程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。辽B代驾管理系统的开发让用户查看代驾订单信息变得容易,让管理员高效管理代驾订单信息。 辽B代驾管理系统具有管理员角色,用户角色,这几个操作权限。 辽B代驾管理系统针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理代驾订单信息,管理公告信息等内容。 辽B代驾管理系统针对用户设置的功能有:查看并修改个人信息,查看代驾订单信息,查看公告信息等内容。 辽B代驾管理系统针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理代驾订单信息,管理公告信息等内容。 辽B代驾管理系统针对用户设置的功能有:查看并修改个人信息,查看代驾订单信息,查看公告信息等内容。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。项目管理页面提供的功能操作有:查看代驾订单,删除代驾订单操作,新增代驾订单操作,修改代驾订单操作。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。新闻管理页面,此页面提供给管理员的功能有:新增新闻,修改新闻,删除新闻。新闻类型管理页面,此页面提供给管理员的功能有:新增新闻类型,修改新闻类型,删除新闻类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值