javascript數(shù)據(jù)結(jié)構(gòu)之串的概念與用法分析
本文實(shí)例講述了javascript數(shù)據(jù)結(jié)構(gòu)之串的概念與用法。分享給大家供大家參考,具體如下:
串是由零個(gè)或多個(gè)字符組成的有限序列。串中字符的個(gè)數(shù)稱為串的長(zhǎng)度。
串中任意個(gè)連續(xù)的字符組成的子序列稱為該串的子串。包含子串的串相應(yīng)地稱為主串。通常稱字符在序列中的序號(hào)為該字符在串中的位置。子串的首字符在主串中首次出現(xiàn)的位置定義為子串在主串中的位置。
串的邏輯結(jié)構(gòu)和線性表十分相似,區(qū)別僅僅在于串的數(shù)據(jù)對(duì)象約束為字符集。然而兩者的基本操作有很大差別。線性表中,基本以單個(gè)元素來進(jìn)行操作;而串中多半以串的整體也就是子串來作為操作對(duì)象。
JavaScript有很多串的方法嗎,具體的請(qǐng)查閱api。
https://developer.mozilla.org/en-US/
這里我們挑一個(gè)來看看,比如indexOf,該方法返回String對(duì)象內(nèi)第一次出現(xiàn)子字符串位置。如果沒有找到子字符串,則返回-1。我們來模擬一下這個(gè)方法的實(shí)現(xiàn):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
function index(a,b,pos){
//a為主串,b為要尋找的子串,pos為開始尋找的位置
if(pos>0){
var a_len=a.length,
b_len=b.length,
i=pos;
while(i<=a_len-b_len+1){
//從第i個(gè)位置取和子串長(zhǎng)度相等的進(jìn)行比較,如果沒有找到則繼續(xù)i+1
var c=a.substr(i,b_len);
if(c==b)
return i;
i++;
}
}
return false;
}
var a="abcdefg";
var b="def";
var c=index(a,b,1);
alert(c);//3
alert(a.indexOf(b,1));//3
</script>
</body>
</html>
這個(gè)思想其實(shí)很簡(jiǎn)單,就是在主串中取從第i個(gè)字符起,長(zhǎng)度和要尋找的串相等的子串進(jìn)行比較,直到找到為止。所以說我們?cè)谶\(yùn)用一些原生的api時(shí),如果能夠知道其實(shí)現(xiàn)的原理,就可以更好的駕馭它們。當(dāng)然,該方法還可以改進(jìn),我在以后的文章中會(huì)介紹的。
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- C數(shù)據(jù)結(jié)構(gòu)中串簡(jiǎn)單實(shí)例
- C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)中串的模式匹配
- c語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)之字符串
- C++語(yǔ)言數(shù)據(jù)結(jié)構(gòu) 串的基本操作實(shí)例代碼
- JavaScript數(shù)據(jù)結(jié)構(gòu)中串的表示與應(yīng)用實(shí)例
- JavaScript中數(shù)據(jù)結(jié)構(gòu)與算法(四):串(BF)
- 數(shù)據(jù)結(jié)構(gòu)基本概念和術(shù)語(yǔ)之位字節(jié)、字、位串、元素等
- 數(shù)據(jù)結(jié)構(gòu)串的操作實(shí)例詳解
相關(guān)文章
JS+HTML5實(shí)現(xiàn)獲取手機(jī)驗(yàn)證碼倒計(jì)時(shí)按鈕
這篇文章主要介紹了基于JS+HTML5實(shí)現(xiàn)獲取手機(jī)驗(yàn)證碼倒計(jì)時(shí)按鈕,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08
js+div實(shí)現(xiàn)圖片滾動(dòng)效果代碼
本篇文章主要是對(duì)js+div實(shí)現(xiàn)圖片滾動(dòng)效果的示例代碼進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-02-02
小程序云開發(fā)實(shí)現(xiàn)數(shù)據(jù)庫(kù)異步操作同步化
這篇文章主要為大家詳細(xì)介紹了小程序云開發(fā)實(shí)現(xiàn)數(shù)據(jù)庫(kù)異步操作同步化,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05
JS正則截取兩個(gè)字符串之間及字符串前后內(nèi)容的方法
這篇文章主要介紹了JS正則截取兩個(gè)字符串之間及字符串前后內(nèi)容的方法,結(jié)合實(shí)例形式簡(jiǎn)單分析了JS正則截取字符串操作的常用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2017-01-01
靜態(tài)頁(yè)面實(shí)現(xiàn) include 引入公用代碼的示例
下面小編就為大家?guī)硪黄o態(tài)頁(yè)面實(shí)現(xiàn) include 引入公用代碼的示例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09
JavaScript立即執(zhí)行函數(shù)的三種不同寫法
這篇文章主要介紹了JavaScript立即執(zhí)行函數(shù)的三種不同寫法,需要的朋友可以參考下2014-09-09
js復(fù)制文本到粘貼板(Clipboard.writeText())
這篇文章主要介紹了js復(fù)制文本到粘貼板(Clipboard.writeText()),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
Jquery把獲取到的input值轉(zhuǎn)換成json
本篇文章主要介紹了Jquery把獲取到的input值轉(zhuǎn)換成json的相關(guān)知識(shí),具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-05-05
js點(diǎn)擊返回跳轉(zhuǎn)到指定頁(yè)面實(shí)現(xiàn)過程
這篇文章主要為大家詳細(xì)介紹了js點(diǎn)擊返回跳轉(zhuǎn)到指定頁(yè)面實(shí)現(xiàn)過程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-04-04

