语法:javascript
1. forEach 就是在模拟 jq 中 eachjava
例: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 来遍历元素, 不能直跳出git
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 );
express
例子: 判断数组中的数字是否都是 偶数数组
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 );
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函数
该方法是对数组元素进行过滤ui
regular expressionthis
正则表达式是一个包含 正常字符 与 元字符 的用于 匹配的 字符串 对象.atom
1> 构造函数: new RegExp( 'map' ) 2> 字面量: /map/
正则表达式对象.test( 字符串 )
检查该字符串中是否符合该正则表达式
例子: 登陆的时候, 注册的时候, 通常状况要求输入的密码包含数字字符特殊字符, 长度超 6 位.
1> 基本元字符 . () [] | 2> 限定元字符 * + ? {n} {n,} {n,m} 3> 首尾元字符 ^ $ 4> 简写元字符 \d \D \s \S \w \W 5> 其余( 不要求 ) 反向引用 \数字 匹配但不捕获 (?:)
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> (?:)
. 除了换行意外的任意字符 [] 表示出如今 [] 中的任意一个字符 () 一方面是提升优先级, 另外一方面分组 | 表示得到, 具备最低优先级 * 紧跟在前面的字符出现 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 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 ] ); }
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( ""|/./, '' )