JS常見疑難點分析之match,charAt,charCodeAt,map,search用法分析
本文實例講述了JS常見疑難點分析之match,charAt,charCodeAt,map,search用法。分享給大家供大家參考,具體如下:
JavaScript match() 方法
定義和用法
match() 方法可在字符串內(nèi)檢索指定的值,或找到一個或多個正則表達式的匹配。
該方法類似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。
語法
匹配字符串,返回指定的值
stringObject.match(searchvalue)
匹配正則,返回指定的值
stringObject.match(regexp)
使用 match() 來檢索一個字符串例子:
<html> <body> <script type="text/javascript"> var str="Hello world!" document.write(str.match("world") + "<br />") document.write(str.match("World") + "<br />") document.write(str.match("worlld") + "<br />") document.write(str.match("world!")) </script> </body> </html>
最終出現(xiàn)的結(jié)果為,world,null,null,world!
使用 match() 來檢索一個正則表達式的匹配例子:
<html> <body> <script type="text/javascript"> var str="1 plus 2 equal 3"; //這里的正則表達式必須加上g,全局匹配,不然就會匹配一個值即返回 document.write(str.match(/\d+/g)) </script> </body> </html>
通常來說,我們用match用在正則上面比較多,也可以用其來代理indexOf和lastIndexOf來判斷字符串里面是否存在此值。
JavaScript search() 方法
定義和用法
search() 方法用于檢索字符串中指定的子字符串,或檢索與正則表達式相匹配的子字符串,檢索到則返回匹配的子串的起始位置,無法檢索到值,返回-1。
語法
stringObject.search(regexp)
該參數(shù)可以是需要在 stringObject 中檢索的子串,也可以是需要檢索的 RegExp 對象。
要執(zhí)行忽略大小寫的檢索,請追加標志 i。
search() 例子:
<script type="text/javascript"> var str="Visit W3School!" document.write(str.search(/W3School/)) </script>
返回索引值為6,search通常與正則配合使用,可以達到indexOf的效果。
JavaScript charAt() 方法
定義和用法
charAt() 方法可返回指定位置的字符。
請注意,JavaScript 并沒有一種有別于字符串類型的字符數(shù)據(jù)類型,所以返回的字符是長度為 1 的字符串。
語法
返回指定位置的字符串
stringObject.charAt(index)
chartAt實例:
<script type="text/javascript"> var str="Hello world!" document.write(str.charAt(1)) </script>
最終返回結(jié)果為:e,通常我們可以通過chartAt來從某個字符串取得具體的字符。
JavaScript charCodeAt() 方法
定義和用法
charCodeAt() 方法可返回指定位置的字符的 Unicode 編碼。這個返回值是 0 - 65535 之間的整數(shù)。
方法 charCodeAt() 與 charAt() 方法執(zhí)行的操作相似,只不過前者返回的是位于指定位置的字符的編碼,而后者返回的是字符子串。
語法
stringObject.charCodeAt(index)
charCodeAt()實例
注釋:字符串中第一個字符的下標是 0。如果 index 是負數(shù),或大于等于字符串的長度,則 charCodeAt() 返回 NaN。
<script type="text/javascript"> var str="Hello world!" document.write(str.charCodeAt(1)) //返回H的Unicode 編碼101 </script>
js中Array.prototype.map()方法
定義和用法
map() 方法返回一個由原數(shù)組中的每個元素調(diào)用一個指定方法后的返回值組成的新數(shù)組。
語法
array.map(callback[, thisArg])
callback原數(shù)組中的元素經(jīng)過該方法后返回一個新的元素。
currentValue,callback 的第一個參數(shù),數(shù)組中當(dāng)前被傳遞的元素。
index,callback 的第二個參數(shù),數(shù)組中當(dāng)前被傳遞的元素的索引。
array,callback 的第三個參數(shù),調(diào)用 map 方法的數(shù)組。
thisArg執(zhí)行 callback 函數(shù)時 this 指向的對象。
map 方法會給原數(shù)組中的每個元素都按順序調(diào)用一次 callback 函數(shù)。callback 每次執(zhí)行后的返回值組合起來形成一個新數(shù)組。 callback 函數(shù)只會在有值的索引上被調(diào)用;那些從來沒被賦過值或者使用
delete 刪除的索引則不會被調(diào)用。callback 函數(shù)會被自動傳入三個參數(shù):數(shù)組元素,元素索引,原數(shù)組本身。
使用map()的第一個例子:
下面的代碼將一個數(shù)組中的所有單詞轉(zhuǎn)換成對應(yīng)的復(fù)數(shù)形式.
function fuzzyPlural(single) { var result = single.replace(/o/g, 'e'); if( single === 'kangaroo'){ result += 'se'; } return result; } var words = ["foot", "goose", "moose", "kangaroo"]; console.log(words.map(fuzzyPlural));
最后結(jié)果:
["feet", "geese", "meese", "kangareese"]
求數(shù)組中每個元素的平方根例子
var numbers = [1, 4, 9]; var roots = numbers.map(Math.sqrt); /* roots的值為[1, 2, 3], numbers的值仍為[1, 4, 9] */
在字符串上使用 map 方法
var map = Array.prototype.map var a = map.call("Hello World", function(x) { return x.charCodeAt(0); }) // a的值為[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script type="text/javascript"> //var map = Array.prototype.map var a = Array.prototype.map.call("Hello World", function(x) { return x.charCodeAt(0); }) // a的值為[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100] alert(a); </script> </body> </html>
map兼容舊環(huán)境
map 是在最近的 ECMA-262 標準中新添加的方法;所以一些舊版本的瀏覽器可能沒有實現(xiàn)該方法。在那些沒有原生支持 map 方法的瀏覽器中,你可以使用下面的 Javascript 代碼來實現(xiàn)它。所使用的算法正是 ECMA-262,第 5 版規(guī)定的。假定Object, TypeError, 和 Array 有他們的原始值。而且 callback.call 的原始值也是 Function.prototype.call。
// 實現(xiàn) ECMA-262, Edition 5, 15.4.4.19 // 參考: http://es5.github.com/#x15.4.4.19 if (!Array.prototype.map) { Array.prototype.map = function(callback, thisArg) { var T, A, k; if (this == null) { throw new TypeError(" this is null or not defined"); } // 1. 將O賦值為調(diào)用map方法的數(shù)組. var O = Object(this); // 2.將len賦值為數(shù)組O的長度. var len = O.length >>> 0; // 4.如果callback不是函數(shù),則拋出TypeError異常. if ({}.toString.call(callback) != "[object Function]") { throw new TypeError(callback + " is not a function"); } // 5. 如果參數(shù)thisArg有值,則將T賦值為thisArg;否則T為undefined. if (thisArg) { T = thisArg; } // 6. 創(chuàng)建新數(shù)組A,長度為原數(shù)組O長度len A = new Array(len); // 7. 將k賦值為0 k = 0; // 8. 當(dāng) k < len 時,執(zhí)行循環(huán). while(k < len) { var kValue, mappedValue; //遍歷O,k為原數(shù)組索引 if (k in O) { //kValue為索引k對應(yīng)的值. kValue = O[ k ]; // 執(zhí)行callback,this指向T,參數(shù)有三個.分別是kValue:值,k:索引,O:原數(shù)組. mappedValue = callback.call(T, kValue, k, O); // 返回值添加到新書組A中. A[ k ] = mappedValue; } // k自增1 k++; } // 9. 返回新數(shù)組A return A; }; }
通常生成時間戳的巧妙方法
第一種方式
function getTimeStamp() { var timestamp=new Date().getTime(); var timestampstring = timestamp.toString();//一定要轉(zhuǎn)換字符串 oldTimeStamp = timestampstring; return timestampstring; }
第二種方式
new Date().toString() //同樣可以達到效果,更簡潔
如何使用md5加密方法:
引用google,md5加密的庫文件:http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/md5.js
其實蠻簡單的,里面CryptoJS.SHA1(),直接引用加密即可,舉個栗子:
就這樣直接調(diào)用就可以了
var keyvaluestring = "ddddd"; sign = CryptoJS.SHA1(keyvaluestring).toString();
PS:這里再提供幾款相關(guān)的加密與正則工具供大家參考使用:
JavaScript正則表達式在線測試工具:
http://tools.jb51.net/regex/javascript
正則表達式在線生成工具:
http://tools.jb51.net/regex/create_reg
BASE64編碼解碼工具:
http://tools.jb51.net/transcoding/base64
URL網(wǎng)址16進制加密工具:
http://tools.jb51.net/password/urlencodepwd
MD5在線加密工具:
http://tools.jb51.net/password/CreateMD5Password
在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript常用函數(shù)技巧匯總》、《javascript面向?qū)ο笕腴T教程》、《JavaScript中json操作技巧總結(jié)》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
- Javascript技術(shù)難點之a(chǎn)pply,call與this之間的銜接
- javascript下數(shù)值型比較難點說明
- 初學(xué)js 新節(jié)點的創(chuàng)建 刪除 的步驟
- 初學(xué)JavaScript_03(ExtJs Grid的簡單使用)
- 初學(xué)js者對javascript面向?qū)ο蟮恼J識分析
- 國外的為初學(xué)者寫的JavaScript教程
- 走出JavaScript初學(xué)困境—js初學(xué)
- 初學(xué)JavaScript第一章
- JavaScript初學(xué)者的10個迷你技巧
- 你有必要知道的10個JavaScript難點
相關(guān)文章
網(wǎng)站內(nèi)容禁止復(fù)制和粘貼、另存為的js代碼
這篇文章主要介紹了JS如何實現(xiàn)網(wǎng)站內(nèi)容如何實現(xiàn)禁止復(fù)制和粘貼、另存為,需要的朋友可以參考下2014-02-02使用JavaScript將圖片合并為PDF的實現(xiàn)
在日常工作中,我們可能需要拍攝一些照片并將圖像合并到PDF文件中,這可以通過許多應(yīng)用來完成,Dynamsoft Document Viewer讓這一操作更加方便,在本文中,我們將使用Dynamsoft Document Viewer創(chuàng)建一個Web應(yīng)用,用JavaScript將圖像合并到PDF中,需要的朋友可以參考下2024-07-07js如何實現(xiàn)點擊標簽文字,文字在文本框出現(xiàn)
這篇文章主要介紹了js如何實現(xiàn)點擊標簽文字,文字在文本框出現(xiàn),感興趣的小伙伴們可以參考下2015-08-08javascript實現(xiàn)點擊產(chǎn)生隨機圖形
這篇文章主要為大家詳細介紹了javascript實現(xiàn)點擊產(chǎn)生隨機圖形,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-01-01