标签:
语法:
1. forEach 就是在模拟 jq 中 each
例:var arr = [ 11, 22, 33 ];
var res = arr.forEach(function ( v, i ) {
// 遍历数据
console.log( i + ‘, ‘ + v );
// console.log( this );//window
return true;
});
console.log( res );//undefined
// 该方法不返回数据, 旨在遍历数组, 在回调函数中 不能使用 this
// 必须使用参数 v,i 来遍历元素, 不能直跳出
2. 例:// map
var arr = [ 11, 22, 33 ];
var res = arr.map( function ( v, i ) {
console.log( i + ‘, ‘ + v );
console.log( this );//window
return v * 2;
});
console.log( res );
补充:var arr = [ 11, 22, 33 ];
//
// // jq 中 each 方法
//
// var res = $.each( arr, function ( i, v ) {
// console.log( i + ‘, ‘ + v );//0, 11
// console.log( this );//Number {[[PrimitiveValue]]: 11}
// // 如果遍历的是 对象数组, 而已直接使用 this 表示这个元素
// // 但是如果是遍历的基本类型的数组, 就必须使用参数
// // return true / false; 是否结束循环
// return false;
// });
//
// console.log( res ); // 返回遍历的数组[11, 22, 33]
//
//
// // jq 中 map 方法: 映射, 地图
// // 将一个具体的东西变成一个抽象的模型
// // 将一个集合 按照某些规律 变成另一个集合
// // [ 1, 2, 3 ], 规律扩大两倍, [ 2, 4, 6 ]
// //
//
// var arr = [ 11, 22, 33 ];
// var res = $.map( arr, function ( v, i ) {
// console.log( i + ‘, ‘ + v ); // 也可以实现循环
//// console.log( this );//window
// // 使用 map 映射, 必须使用 v 和 i, 不能使用 this
// return v * 2;
// });
//
// console.log( res );
例子: 判断数组中的数字是否都是 偶数
var arr = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 ];
// 在判断的时候 some 得到的就应该是真, every 得到的就应该是假
var res1 = arr.some(function ( v, i ) {
return v % 2 === 0;
});
console.log( res1 );
var res2 = arr.every(function ( v, i ) {
// return v % 2 == 0;
// 判断是否每一个元素都是 大于等于 0 的
return v >= 0;
});
console.log( res2 );
从数组中开始查找某一个元素, 如果找到返回其索引, 否则返回 -1
该方法是对数组元素进行过滤
regular expression
正则表达式是一个包含 正常字符 与 元字符 的用于 匹配的 字符串 对象.
1> 构造函数: new RegExp( ‘map‘ ) 2> 字面量: /map/
正则表达式对象.test( 字符串 )
检查该字符串中是否符合该正则表达式
例子: 登录的时候, 注册的时候, 一般情况要求输入的密码包含数字字符特殊字符, 长度超 6 位.
1> 基本元字符
. () [] |
2> 限定元字符
* + ? {n} {n,} {n,m}
3> 首尾元字符
^
$
4> 简写元字符
\d \D
\s \S
\w \W
5> 其他( 不要求 )
反向引用 \数字
匹配但不捕获 (?:)
. 除了换行意外的任意字符
[] 表示出现在 [] 中的任意一个字符
() 一方面是提高优先级, 另一方面分组
| 表示获得, 具有最低优先级
* 紧跟在前面的字符出现 0 次 到 多次, 默认尽可能多的匹配 {0,}
+ 紧跟在前面的字符出现 1 次 到 多次, 默认尽可能多的匹配 {1,}
? 紧跟的前的字符出现 0 次或 1 次 {0,1}
取消贪婪模式(少用)
{n} 紧跟的字符出现 n 次
{n,} 紧跟的字符出现 至少 n 次
{n,m} 紧跟的字符出现 n 到 m 次
^ 放在正则一开始, 表示匹配必须以 xxx 开头
放在 [] 中表示 否定, [^abc]
$ 放在正则的结尾处, 表示必须以 xxx 结尾
在替换中使用 $数字 表示组引用
\d 数字 digit
\D 非数字
\s 空白(空格, 换行, ...) space
\S 非空白 [\S\s] 表示任意的一个字符
\w 文字: 数字, 字母, 下划线 word
\W 非文字
\数字 引用前面匹配到的组
<div>...</div>
<([^>]+)>[^<]+</\1>
(?:)
[1-9]\d*
([\+\-]|)[1-9]\d*
|0
([\+\-]|)[1-9]\d*|0
(|\.\d+)
([\+\-]|)([1-9]\d*|0|)(\.\d+|)
[\w\d]+
[\w\d\.]+
^[\w\d]+@[\w\d\.]+$
[\w\d\-_\.]+
[\w\d\-_]+
\.[\w\d\-_]+
[\w\d\-_]+(\.[\w\d\-_]+)+
[\w\d\-_\.]+@[\w\d\-_]+(\.[\w\d\-_]+)+
方法: exec
语法: 正则对象.exec( 字符串 ) -> 数组
数组中的第 0 项就是匹配到的结果
案例: 截取一个字符串中的所有数字
var s = ‘今天的天气很好, 有 30 几度, 我都花了 10 块钱喝水, 打车花了 103 块钱, 买了一台电脑花了 9999 元.‘
var r = /\d+/g;
// 如果只是匹配一个数据, 无所谓, 但是如果需要将全部的都提取出来, 那么需要使用全局模式, /.../g
// 如值获取一个数据, 调用一次方法即可
var res = r.exec( s );
// 捕获到的是一个数组, 数组的 第 0 项就是捕获到的字符串, 其中 index 属性表示在源字符串中的位置
// 如果需要获得其他的数据, 需要再次调用方法
res = r.exec( s );
练习: 要求从 刚才的字符串中取出所有的数字, 存储到 数组中
var r = /\d+/g;
var m;
m = r.exec( str ); // 30
arr.push( m[ 0 ] );
// 第二个元素就再补货一次
m = r.exec( str ); // 10
arr.push( m[ 0 ] );
// 第三次
m = r.exec( str ); // 103
arr.push( m[ 0 ] );
m = r.exec( str ); // 9999
arr.push( m[ 0 ] );
while( m = r.exec( str ) ) {
arr.push( m[ 0 ] );
}
语法: 字符串.replace( ""|/./, ‘‘ )
标签:
原文地址:http://www.cnblogs.com/wuhui070470/p/5755096.html