語法: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( ""|/./, '' )