JS常用点
来源:互联网 发布:config sae.php 编辑:程序博客网 时间:2024/06/14 04:23
以下的内容均是在学习名为“守候”的博主在sementfault分享的文章,过程中自己有些地方没有理解到的和开始不懂的和容易错误的地方,通过调试理解后,记录在这里。附上该文章地址是https://segmentfault.com/a/1190000010225928,里面有许多实用的方法。
一、不可避免地用到的正则表达式
1.关于$1…..9
看到$2的时候,惊觉自己看不懂。查找之后,对大家的描述始终不能理解,但是理解了之后,再回头去看大家的解释说得确实很对。就是这么纠结! 把看到的小程序小小地改动了一下(哈哈,换了一首自己比较喜欢的现代诗), $ 1代表正则表达式匹配到的第一个子正则表达式; $2代表正则表达式匹配到的第二个子正则表达式; ......
theObj.innerHTML=content.replace(Reg,"<span>$1</span>");//对匹配到的正则表达式,替换为第一个子表达式
效果如下图所示,要匹配的正则表达式为(你)(的),因此会首先找出所有的“你的”,再将“你的”替换为第一个正则表达式“你”,并设置字体颜色为红色。
接着将替换的内容换做$2:
theObj.innerHTML=content.replace(Reg,"<span>$2</span>");//对匹配到的正则表达式,替换为第一个子表达式
ok,验证结束!本例过程中,有对html标签进行过滤。原因是由于我们在选择到要选择的值时,为其增加了一个span标签,所以需要避免下一次操作时,上一轮的选择状态不会仍然存在。
//html标签的正则表达式,[^>]表示尖括号中间的内容/<\/?[^>]*>/
二. 数组迭代方法
1.map( ) :对数组中每一项遍历,可指定运行的函数,返回每次函数调用的结果所组成的数组。
2.filter( ):同理也是遍历数组,可给每一项指定运行函数,每次返回值是返回拿到值为true的项,因此最终返回是一个由返回项值为true的数组成员所组成的新数组。
3.every和some
(1) every( ):同理,遍历数组,且对于指定的函数,只有当每一项执行函数的返回值为true,才返回true;
(2)some( ):同理,遍历数组,却对于指定函数,只要任一项执行该函数时返回值为true,则最终函数返回值为true;
eg:
4.forEach( )
对数组中的每一项运行给定函数,这个方法没有返回值 ;
5.reduce( ) !!!每次只能接受两个参数
作用效果和原理就是[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4),累加计算
6.finde( )和findeIndex( )
(1)find( ):返回符合条件(条件也是在函数中调用)的数组第一个元素;
(2)findIndex( ):返回符合条件(条件也是在函数中调用)的数组第一个元素的位置索引(从0开始);
三、实用小方法
1.字符串大小写切换(源码详见原博主文章,地址见本文开始)
在使用replace( )方法时,第二个参数为匿名函数,且有多个参数。
switch (type) { case 1: return str.replace(/^(\w)(\w+)/, function (v, v1, v2, v3, v4) { console.log("v=",v); console.log("v1=",v1); console.log("v2=",v2); return v1.toUpperCase() + v2.toLowerCase(); }); case 2: return str.replace(/^(\w)(\w+)/, function (v, v1, v2, v3, v4) { console.log("vv=",v); console.log("v11=",v1); console.log("v22=",v2); console.log("v33=",v3); console.log("v44=",v4); return v1.toLowerCase() + v2.toUpperCase(); }); case 3: return ToggleCase(str); case 4: return str.toUpperCase(); case 5: return str.toLowerCase(); default: return str;} var str = "aA_SS_AD*dM";console.log(changeCase(str,1));console.log(changeCase(str,2));
打印结果:
分析后,发现,第二个参数为函数时,其实有三个参数是被确定的:
(1)参数1:匹配到的字符串;
(2)倒数第二个参数:匹配到的字符串中的第一个字符在原字符串中的索引位置;
(3)最后一个参数:原字符串;
而中间可以有多个参数,分别代表匹配到的字符串中,第一个子表达式的内容、第二个、第三个……上面的例子中,第一个子表达式,表示包括下划线的所有字母的字符。
故:调用函数的第一种处理时(首字母大写),明显可以看到v是匹配到的字符串,v1是匹配字符串中第一个字表达匹配到的字符a,v2是……第二个子表达式匹配到的字符b,v3匹配第一个字符在原字符中的位置索引(从0开始),v4则为原表达达式!
!!!值得注意的是:
(1)当字符串后部分存在不识别的字符时,正则匹配时自动忽略后面,例如上面打印输出的部分,v只截取了*之前的部分。
(2)只有通过正则表达式成功匹配时,才会执行后面的匿名函数,否则不会执行。验证如下:将字符串首字母改成*,因为匹配不成功,因此replace()方法返回值为原字符串本身。
- JS常用点
- js与jquery一些常用点
- 常用js
- 常用js
- 常用JS
- 常用js
- js 常用
- JS常用
- js常用
- 常用js
- 常用js
- 常用JS
- 常用 js
- 常用JS
- js常用...
- 常用JS
- js常用
- 常用js
- Jenkins Day1基础之安装篇
- springboot 用war包部署
- post安装
- 模拟键盘输入adb shell input
- 树的重心(模板)
- JS常用点
- ubuntu修改主机名
- 模板,堆,小根堆
- android 提升app启动速度以及Splash界面设计
- vue2+vuex+vue-router 快速入门(四) vue-router 介绍
- 译文 | 与TensorFlow的第一次接触 第四章:单层神经网络
- 学习资料参考:从深度学习到自然语言处理
- 一键配置ss脚本
- 关于类重载前置++和后置++的骚操作