博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端基础22:数组迭代基本方法
阅读量:6266 次
发布时间:2019-06-22

本文共 3085 字,大约阅读时间需要 10 分钟。

回调函数

  • 把一个函数的定义(A)作为参数传给另一个函数(B),函数A称为B的回调函数,B函数运行完后才会运行A函数

数组迭代方法

  • forEach()数组遍历,无返回值
    • 参数: - 1.是一个回调函数 - 2.是一个context(改变回调函数中的this关键字)
var a = [1,2,3,4,5];    a.forEach(function (item,index,a) { //声明式        console.log(item, index, a);//值,索引,原数组    });复制代码
  • map()遍历数组,有返回值,可以对原数组进行操作
    • 参数: - 1.是一个回调函数 - 2.是一个context(改变回调函数中的this关键字)
var a = [1,2,3,4,5];    var res = a.map(function (item,index,a) {        return item*2; //将回调函数的返回值放入一个新数组中,最后将新数组作为map方法的返回值    })    console.log(a);//[1, 2, 3, 4, 5]    console.log(res);//[2, 4, 6, 8, 10]复制代码
  • 重写map方法:
//回调函数考虑的几个方面    //1.回调函数是否有参数    //2.回调函数执行次数    //3.回调函数是否有返回值    var ary = [1,2,3,4,5];    Array.prototype.myMap = function (callback,context) {        //先处理第二个参数判断是否传了        context = context || window;        //this指的是数组 callback执行的次数是数组的长度        var newAry = [];//用来存回调函数的返回值        for(var i = 0; i < this.length; i++){            var res = callback.call(context,this[i],i,this);            newAry.push(res);        }        return newAry;    }    var res = ary.myMap(function (item,index,ary) {        return item*2;    })    console.log(res);复制代码
  • some有一个为真返回true,所有为假返回false (参数同上)
var ary = [1,2,3,4,5];    var res = ary.some(function (item,index,ary) {        return item>3;    })    console.log(res);//true复制代码
  • every有一个为假返回false,所有为真返回true (参数和上面相同)
var ary = [1,2,3,4,5];    var res = ary.every(function (item,index,ary) {        return item>3;    })    console.log(res);//false复制代码
  • filter过滤 把满足条件的留下,不满足的过滤掉 (参数同上)
var ary = [1,2,3,4,5];    var res = ary.filter(function (item,index,ary) {        return item>2;    })    console.log(res);//[3,4,5]复制代码
  • es6:find 返回满足条件的这一项,一旦找到不会继续查找,找不到返回undefined (参数同上)
var ary = [1,2,3,4,5];    var res = ary.find(function (item,index,ary) {        return item>2;    })    console.log(res);//3复制代码
  • es6:findindex 返回满足条件的索引,找不到返回-1 (参数同上)
var ary = [1,2,3,4,5];    var res = ary.findIndex(function (item,index,ary) {        return item>2;    })    console.log(res);//2复制代码
  • reducereduceRight对每一项累计的结果 如求累加之和 两方法数组取值顺序不同 ***reduceRight***和reduce取值方向相反
    • 参数: - 1.第一个参数是一个回调函数 - 2.第二个参数是用来设置累计项的初始值,不设置为数组的第一个值
var ary = [1,2,3,4,5];    var res = ary.reduce(function (prev,cur) {        //prev 累计项 不设置为数组的第一项 cur数组的每一项        return prev + cur;    })    console.log(res);//15复制代码

正则

  • 正则用来处理字符串的
  • 正则的概念:相当于一个模型(验证的规则)匹配符合的字符串
  • 正则的作用:匹配(test)和捕获(reg.exec(),str.match(),str.split())
  • 正则的组成部分:元字符和修饰符

特殊含义的元字符:

符号 意义
\d 匹配一个数字字符
\D 匹配非数字
\w 匹配A-Z,a-z,0-9,下划线
\W 匹配非单词字符
\s 匹配任意空字符
\b 匹配边界字符
x|y 匹配x或y
[zyx] 表示xyz任意一个
[^zyx] 匹配不是zxy任何一个
[a-z] 匹配a-z的任意一个
[^a-z] 匹配非a-z
() 代表分组
^ 代表以什么开头
$ 代表以什么结束
. 代表任何字符(除了\n)
\ 表示转意
\n 换行符
?: 只匹配不捕获
  • []用法
    • []中的-表示ascii码中连续的字符
    • 特殊的字符在[]中表示字符本身的意思,特殊字符不包括\d,\w等
    • []中没有两位数

量词元字符

符号 意义
* 表示0到多次
+ 表示1到多次
表示0或者1次
{n} 表示出现n次
{n,} 表示出现n到多次
{n,m} 表示出现n到m次

修饰符

符号 意义
g(globa) 全局匹配
i(ignoreCase) 忽略大小写
m(multiple) 多行匹配
  • 用16进制表示没法操作的字符,不足四位的在前面补零
var reg = /[\u4e00-\u9fa5]{2,5}/; //匹配中文字符    var str = '沙发';    console.log(reg.test(str));//true复制代码

正则定义方式

  • 字面量方式://
  • 构造函数的方式:new RegExp()
  • 区别:
    • 1.构造函数的方式可以表示变量,字面量不行
    • 2.构造函数中\表示一个\

转载于:https://juejin.im/post/5ba0edc4e51d450e580b357d

你可能感兴趣的文章
只有PD号的调起
查看>>
返回一个整数数组中最大子数组的和
查看>>
leetcode(二)
查看>>
利用css实现居中的方法
查看>>
Spring + Hibernate 框架
查看>>
添加浏览器的用户样式表
查看>>
LigerUI学习笔记之布局篇 layout
查看>>
LeetCode题解(二)
查看>>
Mybatis通用Mapper
查看>>
文件磁盘命令(就该这么学6章内容)
查看>>
2016-207-19 随笔
查看>>
java的double类型如何精确到一位小数?
查看>>
看看国外的javascript题目,你能全部做对吗?
查看>>
ffmpeg 如何选择具有相同AVCodecID的编解码器 (AVCodec)
查看>>
真正解决 Windows 中 Chromium “缺少 Google API 密钥” 的问题
查看>>
Spring 之 AOP
查看>>
软件项目管理|期末复习(二)
查看>>
直接调用VS.net2005中的配置界面
查看>>
程序员的自我修养五Windows PE/COFF
查看>>
关于字符集,编码格式,大小端的简单总结
查看>>