javascript
JavaScript中的数组和字符串
知識內(nèi)容:
1.JavaScript中的數(shù)組
2.JavaScript中的字符串
?
?
?
一、JavaScript中的數(shù)組
1.JavaScript中的數(shù)組是什么
數(shù)組指的是數(shù)據(jù)的有序列表,每種語言基本上都有數(shù)組這個概念,但是JavaScript的數(shù)組跟別的語言的數(shù)組很不同:
- 數(shù)組長度可以動態(tài)改變
- 同一個數(shù)組中可以存儲不同的數(shù)據(jù)類型
- 數(shù)據(jù)的有序集合
- 每個數(shù)組都有一個length屬性,表示的是數(shù)組中元素的個數(shù)
JavaScript數(shù)組從本質(zhì)上講是一個Array對象
?
?
2.如何創(chuàng)建數(shù)組
1 var s1 = ["123", "666", "333"] // 字面量 2 var s2 = new Array("123", "666", "333") // 構(gòu)造函數(shù) 3 console.log(s1) 4 console.log(s2)?
?
3.訪問、修改數(shù)組元素
1 //創(chuàng)建一個長度為 5 的數(shù)據(jù) 2 var arr = [10, 20, 30, 40, 50]; 3 console.log(arr[0]); //獲取下標(biāo)為 0 的元素, 即:10 4 console.log(arr[2]); //獲取下標(biāo)為 2 的元素, 即:30 5 6 arr[1] = 100; //把下標(biāo)為 1 的元素賦值為100 7 console.log(arr)?
?
4.遍歷數(shù)組
有3種方法可以遍歷數(shù)組:
- for循環(huán)
- for… in
- for each ( ES5 新增)
?以下3種循環(huán)方法只要熟練掌握一種就可以了
1 // 普通for循環(huán)遍歷數(shù)組 2 var arr = [3, 9, 12, 13, 66]; 3 for(var i = 0; i < arr.length; i++){ //數(shù)組長度多長,就遍歷多少次。 循環(huán)變量作為數(shù)組的下標(biāo) 4 console.log(arr[i]); 5 } 6 7 // for ... in 遍歷數(shù)組 8 // 每循環(huán)一輪,都會把數(shù)組的下標(biāo)賦值給變量index,然后index就拿到了每個元素的下標(biāo)。 9 //注意:這里index是元素的下標(biāo),不是與元素 10 //對數(shù)組來說,index從從0開始順序獲取下標(biāo) 11 for (var index in arr) { 12 console.log(index); //循環(huán)輸出: 0 1 2 3 4 5 13 } 14 for(var i in arr){ 15 console.log(arr[i]); 16 } 17 18 // for each 遍歷數(shù)組 19 //調(diào)用數(shù)組的forEach方法,傳入一個匿名函數(shù) 20 //匿名函數(shù)接受兩個參數(shù): 參數(shù)1--迭代遍歷的那個元素 參數(shù)2:迭代遍歷的那個元素的下標(biāo) 21 //可以在匿名函數(shù)內(nèi)部書需要的代碼 22 arr.forEach( function(element, index) { 23 console.log(element); 24 });?
?
5.數(shù)組其他常用方法
1 obj.length 數(shù)組的大小2 3 obj.push(ele) 尾部追加元素4 obj.pop() 尾部獲取一個元素5 obj.unshift(ele) 頭部插入元素6 obj.shift() 頭部移除元素7 obj.splice(start, deleteCount, value, ...) 插入、刪除或替換數(shù)組的元素8 obj.splice(n,0,val) 指定位置插入元素9 obj.splice(n,1,val) 指定位置替換元素 10 obj.splice(n,1) 指定位置刪除元素 11 obj.slice( ) 切片 12 obj.reverse( ) 反轉(zhuǎn) 13 obj.join(sep) 將數(shù)組元素連接起來以構(gòu)建一個字符串 14 obj.concat(val,..) 連接數(shù)組 15 obj.sort( ) 對數(shù)組元素進(jìn)行排序(1)獲取數(shù)組長度
1 var arr = [10, 20, 30, 40, 50]; 2 alert(arr.length); //彈出:5?
(2)像數(shù)組中添加元素
向數(shù)組中添加元素有以下兩種方法(一般都是用第一種):
- obj.push(ele) 尾部追加元素
- obj.unshift(ele) 頭部插入元素
?
(3)從數(shù)組中刪除元素
向數(shù)組中刪除元素有兩種方法:
- obj.pop() 尾部移除元素
- obj.shift() 頭部移除元素
?
(4)數(shù)組的轉(zhuǎn)換方法
toString()轉(zhuǎn)換方法:返回由數(shù)組中每個值的字符串形式拼接而成的一個以逗號分隔的字符串
join() 方法:toString() 方法只能使用逗號連接,而 join() 方法可以使用指定的連接符連接
1 var s = [1, 2, 3, 4, 5, 6] 2 console.log(s.toString()) 3 console.log(s) 4 console.log(s.join("+")) 5 console.log(s)?
(5)數(shù)組元素倒置 -> reverse方法
1 var s = [1, 2, 3, 4, 5, 6]; 2 3 console.log(s.reverse()); 4 console.log(s);?
(6)查找指定元素在數(shù)組中的索引
1 indexOf(item): 從前面開始向后查找 item 第一次出現(xiàn)的位置 2 lastIndexOf(item): 從尾部開始向前查找 item 第一次出現(xiàn)的位置 3 如果找不到元素,則返回 -1 4 5 indexOf(item, fromBack): 從第二個參數(shù)的位置開向后始查找 item 第一次出現(xiàn)的位置 6 lastIndexOf(item, fromForward): 從第二個參數(shù)的位置開始向前查找 item 第一次出現(xiàn)的位置 1 var arr = ["66", 3, 21, "wyb"] 2 console.log(arr.indexOf("wyb")) // 3 3 console.log(arr.lastIndexOf("wyb")) // 3?
(7)其他方法
其他方法不詳細(xì)介紹,用的少,要用的時(shí)候再去查吧
1 obj.splice(start, deleteCount, value, ...) 插入、刪除或替換數(shù)組的元素 2 obj.splice(n,0,val) 指定位置插入元素 3 obj.splice(n,1,val) 指定位置替換元素 4 obj.splice(n,1) 指定位置刪除元素 5 obj.slice( ) 切片 6 obj.reverse( ) 反轉(zhuǎn) 7 obj.join(sep) 將數(shù)組元素連接起來以構(gòu)建一個字符串 8 obj.concat(val,..) 連接數(shù)組 9 obj.sort( ) 對數(shù)組元素進(jìn)行排序?
?
?
二、JavaScript中的字符串
1.JavaScript字符串介紹
(1)JavaScript中字符串類型類似python中字符串類型:
- 字符串是由字符組成的數(shù)組,字符串是不可變的:可以訪問字符串任意位置的文本,但并未提供修改已知字符串內(nèi)容的方法
- 另外用雙引號表示的字符串和單引號表示的字符串完全相同
- 字符串有可以直接使用的方法
?
(2)定義字符串:
1 var s = "hello world" 2 var name = 'wyb'?
(3)多行字符串:
1 var line = ` 2 多行 3 字符串 4 ` 5 6 // 輸出到終端(要在瀏覽器打開檢查器的終端才能看到) 7 console.log(line)?
(4)轉(zhuǎn)義符
在代碼中表示字符串的時(shí)候, 很多東西不方便表示, 因此我們使用轉(zhuǎn)義符的方式來表示,轉(zhuǎn)義符是字符串中的特殊符號,由反斜杠(backslash)開始,接另一個字符結(jié)束
常用的轉(zhuǎn)義符有:
- \n // 表示一個換行符
- \t // 表示一個 TAB(制表符)
- \\ // 表示一個反斜杠 \
- \' // 表示一個單引號
- \" // 表示一個雙引號
還有一些別的轉(zhuǎn)義符,但極少使用,對于這種東西,不必記憶,知道有這么回事就好了
?
(5)字符串替換(格式化)
1 var msg = "wyb" 2 var someThing = `${msg}666` // 替換字符串(格式化) 3 4 console.log(someThing)?
?
2.JavaScript中字符串常用方法
1 obj.length 長度 2 3 obj.trim() 移除空白 4 obj.trimLeft() 5 obj.trimRight) 6 obj.charAt(n) 返回字符串中的第n個字符 7 obj.concat(value, ...) 拼接 8 obj.indexOf(substring,start) 子序列位置 9 obj.lastIndexOf(substring,start) 子序列位置 10 obj.substring(from, to) 根據(jù)索引獲取子序列 11 obj.slice(start, end) 切片 12 obj.toLowerCase() 大寫 13 obj.toUpperCase() 小寫 14 obj.split(delimiter, limit) 分割 15 obj.search(regexp) 從頭開始匹配,返回匹配成功的第一個位置(g無效) 16 obj.match(regexp) 全局搜索,如果正則中有g(shù)表示找到全部,否則只找到第一個。 17 obj.replace(regexp, replacement) 替換,正則中有g(shù)則替換所有,否則只替換第一個匹配項(xiàng), 18 $數(shù)字:匹配的第n個組內(nèi)容; 19 $&:當(dāng)前匹配的內(nèi)容; 20 $`:位于匹配子串左側(cè)的文本; 21 $':位于匹配子串右側(cè)的文本 22 $$:直接量$符號 23 obj.substr(start, length) 截取字符串 24 obj.substring(start, length) 截取字符串?
補(bǔ)充 - 字符串常用知識點(diǎn):
1 var log = function (){ 2 console.log.apply(this, arguments); 3 }; 4 5 // ——字符串常用操作—— 6 // 字符串可以判斷相等、判斷是否包含、相加、取子字符串 7 // 例子: 8 // 判斷相等或者包含 9 log('good' == 'good') 10 log('good' == 'bad') 11 log('good' != 'bad') 12 log('impossible'.includes('possible')) 13 log('believe'.includes('lie')) 14 15 // +拼接得到一個新字符串 16 log('very' + 'good') 17 log('very ' + 'good') 18 19 // 得到一個你想要的字符串有多種方式 20 // 但是現(xiàn)在有現(xiàn)代的方式, ES6的 模板字符串 21 // 用法如下: 22 var name = 'wyb' 23 var a = `${name}, 你好` 24 log(a) 25 // 簡單說來, 就是 ${} 會被變量替換行成新字符串 26 27 // 另外JavaScript的字符串中沒有像python那樣的格式化 要想使用python中那樣的格式化要自己寫一個 寫法如下: 28 // JavaScript字符串格式化 29 String.prototype.format = function (args) { 30 var result = this; 31 if (arguments.length > 0) { 32 if (arguments.length == 1 && typeof (args) == "object") { 33 for (var key in args) { 34 if (args[key] != undefined) { 35 var reg = new RegExp("({" + key + "})", "g"); 36 result = result.replace(reg, args[key]); 37 } 38 } 39 } 40 else { 41 for (var i = 0; i < arguments.length; i++) { 42 if (arguments[i] != undefined) { 43 var reg = new RegExp("({)" + i + "(})", "g"); 44 result = result.replace(reg, arguments[i]); 45 } 46 } 47 } 48 } 49 return result; 50 }; 51 52 // 寫了上面的字符串格式化函數(shù)之后就可以像下面一樣直接使用類似python的字符串格式化了 53 var s = "this a test string for {0}".format("format") 54 var msg = "{0} {1} {2} msg".format("this", "is", "a test") 55 log(s, msg) 56 57 // 字符串相當(dāng)于一個 array,可以用數(shù)字下標(biāo)訪問 58 // s 的長度為 7,但是下標(biāo)是從 0 開始的,所以最大下標(biāo)是6 59 var s = 'iamgood' 60 log(s[0]) 61 log(s[1]) 62 log(s[2]) 63 // ... 64 log(s[6]) 65 66 // 當(dāng)然也就可以和 array 一樣用循環(huán)遍歷了 67 for(var i=0; i<s.length; i++){ 68 log(s[i]); 69 } 70 for (var v in s){ 71 log(s[v]); 72 } 73 74 // 字符串可以切片, 當(dāng)然, array 也可以這樣切片 75 // 語法如下 76 // s.slice(開始下標(biāo), 結(jié)束下標(biāo)) 77 var s = 'iamgood' 78 s.slice(0, 3) // 'iam' 79 s.slice(1, 3) // 'am' 80 81 // 省略下標(biāo)參數(shù)意思是取到底 82 s.slice(2) // 'mgood'?
?
3.將其他類型轉(zhuǎn)化成字符串
- toString()
- String()
?
?
4.拓展:定時(shí)器
定時(shí)器:setInterval('執(zhí)行的代碼',間隔時(shí)間)
1 <!DOCTYPE html>2 <html lang="en">3 <head>4 <meta charset="UTF-8">5 <title>Title</title>6 </head>7 <body>8 <script>9 function f1(){ 10 console.log(1); 11 } 12 13 // 創(chuàng)建一個定時(shí)器 14 //setInterval("alert(123);", 5000); // 每隔5秒彈框 15 setInterval("f1();", 2000); // 每隔2秒log出1 16 </script> 17 </body> 18 </html>?
還有一些別的轉(zhuǎn)義符,但極少使用,對于這種東西,不必記憶,知道有這么回事就好了。
轉(zhuǎn)載于:https://www.cnblogs.com/wyb666/p/9348508.html
總結(jié)
以上是生活随笔為你收集整理的JavaScript中的数组和字符串的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习——前馈神经网络
- 下一篇: 用原生 JS 实现 MVVM 框架2——