六、字符串和數(shù)組
目錄
1.字符的常用方法
1.length屬性烤蜕,返回的是字符串的長度
2.charAt()方法辕近,根據(jù)字符串中字符的索引(下標)獲取對應(yīng)的字符韵吨,注意:索引從0開始獲取字符串的中指定索引的字符,也可以通過[索引]的方式獲取
3.charCodeAt()方法移宅,用于獲取字符串中指定位置字符的Unicode編碼值,Unicode編碼是指不同國家的人归粉,使用不同的字符描述數(shù)據(jù)。這些字符計算機不認識漏峰,計算機只認識二進制數(shù)字糠悼,也就是0和1,所以將全世界范圍內(nèi)使用的常用字符都定義一個對應(yīng)的十進制數(shù)字編碼浅乔,而這個十進制的數(shù)字編碼就是Unicode編碼倔喂,再將這些十進制的Unicode編碼轉(zhuǎn)為二進制編碼傳給計算機識別
比如:A -> 65 a -> 97 你 -> 20320
4.concat()方法铝条,用于拼接字符串,通常情況下席噩,我們可以直接使用加號去拼接班缰,該方法,可以同時拼接多個字符串數(shù)據(jù)
5.fromCharCode()方法悼枢,用于將指定的Unicode編碼轉(zhuǎn)為指定字符埠忘,注意該方法是由String類型來調(diào)用的,該方法馒索,可以傳遞多個Unicode編碼
6.indexOf()方法给梅,用于從字符串中返回指定字符串第一次出現(xiàn)的位置(注意:索引從0開始,找不到返回-1)
7.lastIndexOf()方法双揪,是從后往前找,找到后包帚,下標是從前往后數(shù)(注意渔期,如果找不到返回-1)
8.slice()方法,用于截取指定區(qū)間范圍內(nèi)的字符串渴邦,該方法需要傳兩個參數(shù)疯趟,分別是起始位置和結(jié)束位置,能夠取到起始位置谋梭,取不到結(jié)束位置信峻,注意:slice()方法的參數(shù),可以傳負數(shù)瓮床,表示從后往前數(shù)索引
9.substring()方法盹舞,用于截取指定區(qū)間范圍內(nèi)的字符串,該方法需要傳兩個參數(shù)隘庄,分別是起始位置和結(jié)束位置踢步,能夠取到起始位置,取不到結(jié)束位置丑掺,注意:substring()方法參數(shù)获印,只能傳正數(shù),不能傳負數(shù)
10.substr()方法街州,也是用于截取字符串兼丰,它的兩參數(shù)分別是:起始位置和截取長度
注意:slice,substring唆缴,substr方法鳍征,如果只傳1個參數(shù),就表示從起始位置到最后全部截取
11.toLowerCase()方法面徽,用于返回字符串轉(zhuǎn)的小寫版本蟆技,注意:不是改自身
12.toUpperCase()方法,用于返回字符串的大寫版本,注意:不是改自身
13.trim()方法质礼,用于去除字符串兩端空格
14.repeat(num) 方法旺聚,用于重復指定的字符串多少次
15.split()把一個字符串分割成字符串數(shù)組,可以傳兩個參數(shù)分別為separator和limit? 提示:如果把空字符串 ("") 用作 separator眶蕉,那么 stringObject 中的每個字符之間都會被分割砰粹。注意: split() 方法不改變原始字符串。limit參數(shù)可指定返回的數(shù)組的最大長度造挽。如果設(shè)置了該參數(shù)碱璃,返回的子串不會多于這個參數(shù)指定的數(shù)組。如果沒有設(shè)置該參數(shù)饭入,整個字符串都會被分割嵌器,不考慮它的長度。
代碼:
<!DOCTYPE html>
<html>
<head>
? ? <meta charset="UTF-8">
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">
? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">
? ? <title>字符的常用方法</title>
</head>
<body>
? ? <script>
? ? ? ? let s1 = "好好? 學習"
? ? ? ? // length屬性谐丢,返回的是字符串的長度爽航,空格也是字符
? ? ? ? console.log(s1.length);
? ? ? ? let s2 = "HelloWorld"
? ? ? ? // charAt()方法,根據(jù)字符串中字符的索引(下標)獲取對應(yīng)的字符乾忱,注意:索引從0開始
? ? ? ? console.log(s2.charAt(0));
? ? ? ? console.log(s2.charAt(3));
? ? ? ? // 獲取字符串的中指定索引的字符讥珍,也可以通過[索引]的方式獲取
? ? ? ? console.log(s2[0]);
? ? ? ? console.log(s2[3]);
? ? ? ? console.log('-------------------------------');
? ? ? ? // charCodeAt()方法,用于獲取字符串中指定位置字符的Unicode編碼值
? ? ? ? // A -> 65 -> 01000001窄瘟,a -> 97衷佃,你 -> 20320
? ? ? ? console.log(s2.charCodeAt(0));
? ? ? ? console.log(s1.charCodeAt(0));
? ? ? ? console.log('------------------------------');
? ? ? ? // concat()方法,用于拼接字符串蹄葱,通常情況下氏义,我們可以直接使用 加號 去拼接,該方法图云,可以同時拼接多個字符串數(shù)據(jù)
? ? ? ? let s3 = "張三"
? ? ? ? let s4 = "李四"
? ? ? ? let s5 = "王五"
? ? ? ? let s6 = s3.concat(s4)
? ? ? ? console.log(s6);
? ? ? ? console.log(s3);
? ? ? ? let s7 = s3.concat(s4,s5)
? ? ? ? console.log(s7);
? ? ? ? let s8 = s3+s4
? ? ? ? console.log(s8);
? ? ? ? let s9 = s3+s4+s5
? ? ? ? console.log(s9);
? ? ? ? console.log('-------------------------------');
? ? ? ? // fromCharCode()方法觅赊,用于將指定的Unicode編碼轉(zhuǎn)為指定字符,注意該方法是有String類型來調(diào)用的琼稻,該方法吮螺,可以傳遞多個Unicode編碼
? ? ? ? console.log(String.fromCharCode(65));
? ? ? ? console.log(String.fromCharCode(65,66,67));
? ? ? ? console.log(String.fromCharCode(12345,33678,44778));
? ? ? ? console.log('--------------以下是字符串的核心方法-----------------');
? ? ? ? // indexOf()方法,用于從字符串中返回指定字符串第一次出現(xiàn)的位置(注意:索引從0開始帕翻,找不到返回-1)
? ? ? ? let str1 = "abc你好ccc你好ddd你好eee"
? ? ? ? console.log(str1.indexOf('你好'));
? ? ? ? console.log(str1.indexOf('你好呀'));
? ? ? ? console.log('------------');
? ? ? ? // lastIndexOf()方法鸠补,是從后往前找,找到后嘀掸,下標是從前往后數(shù)(注意紫岩,如果找不到返回-1)
? ? ? ? console.log(str1.lastIndexOf('你好'));
? ? ? ? console.log(str1.lastIndexOf('你好呀'));
? ? ? ? console.log('------------');
? ? ? ? // slice()方法,用于截取指定區(qū)間范圍內(nèi)的字符串睬塌,該方法需要傳兩個參數(shù)泉蝌,分別是起始位置和結(jié)束位置歇万,能夠取到起始位置,取不到結(jié)束位置勋陪,
? ? ? ? // 注意:slice()方法的參數(shù)贪磺,可以傳負數(shù),表示從后往前數(shù)索引
? ? ? ? console.log(str1.slice(3,6));
? ? ? ? // 如果只傳一個參數(shù)诅愚,從起始位置往后全部截取
? ? ? ? console.log(str1.slice(3));
? ? ? ? console.log(str1.slice(-6,-3));
? ? ? ? console.log('------------');
? ? ? ? // substring()方法寒锚,用于截取指定區(qū)間范圍內(nèi)的字符串,該方法需要傳兩個參數(shù)违孝,分別是起始位置和結(jié)束位置刹前,能夠取到起始位置,取不到結(jié)束位置雌桑,
? ? ? ? // 注意:substring()方法參數(shù)喇喉,只能傳正數(shù),不能傳負數(shù)
? ? ? ? console.log(str1.substring(3,6));
? ? ? ? console.log(str1.substring(3));
? ? ? ? console.log(str1.substring(-6,-3));
? ? ? ? console.log('------------');
? ? ? ? // substr()方法校坑,也是用于截取字符串拣技,它的兩參數(shù)分別是:起始位置和截取長度
? ? ? ? console.log(str1.substr(3,6));
? ? ? ? // 只傳一個參數(shù),也是從起始位置往后全部截取
? ? ? ? console.log(str1.substr(3));
? ? ? ? console.log('------------');
? ? ? ? // toLowerCase()方法,用于返回字符串轉(zhuǎn)的小寫版本大渤,注意:不是改自身
? ? ? ? // toUpperCase()方法泵三,用于返回字符串的大寫版本较曼,注意:不是改自身
? ? ? ? let str2 = 'AbCdEfG'
? ? ? ? console.log(str2.toLowerCase());
? ? ? ? console.log(str2.toUpperCase());
? ? ? ? console.log('------------');
? ? ? ? // trim()方法萍歉,用于去除字符串兩端空格
? ? ? ? let str3 = '? abc? cba? '
? ? ? ? console.log(str3.length);
? ? ? ? // 注意:trim()方法,只能去掉字符串兩端的空格抚垄,中間的空格無法去除浙滤。
? ? ? ? console.log(str3.trim().length);
? ? ? ? let str4 = "adadacosd"
? ? ? ? //不傳任何參數(shù)則默認分割為長度為1的數(shù)組
? ? ? ? let arr = str4.split()
? ? ? ? console.log(arr);
? ? ? ? //只傳引號分割每個字符揖膜,包括空格
? ? ? ? let arr1 = str4.split("")
? ? ? ? console.log(arr1);
? ? ? ? //傳引號和第二個參數(shù)表示該數(shù)組長度為6,即取上個數(shù)組結(jié)果前6個
? ? ? ? let arr2 = str4.split("",6)
? ? ? ? console.log(arr2);
? ? ? ? let str5 = "name:張三&age:25&gender:男&enduction:本科"
? ? ? ? //當字符串中由某個字符連接時薄啥,如果不想要該字符克握,可以使用這個字符作為分隔符去除)
? ? ? ? let arr3 = str5.split("&")
? ? ? ? console.log(arr3);
? ? </script>
</body>
</html>
控制臺顯示為:
2.字符串練習題
代碼:
1.輸入郵箱地址,驗證郵箱格式是否正確
<!DOCTYPE html>
<html>
<head>
? ? <meta charset="UTF-8">
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">
? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">
? ? <title>字符串練習1</title>
</head>
<body>
? ? <script>
? ? ? ? // 輸入郵箱地址,驗證郵箱格式是否正確
? ? ? ? // 郵箱格式:必須包含@符號切心,必須包含.符號,.符號必須在@符號的后面材原,而且中間至少再隔一位
? ? ? ? // @符號不能是第一位沸久,.符號不能是最后一位
? ? ? ? // 比如:zhangsan@123.com
? ? ? ? let email = prompt('請輸入郵箱:')
? ? ? ? // 獲取郵箱中@符號的位置
? ? ? ? let index1 = email.indexOf('@')
? ? ? ? // 獲取郵箱中最后一個.符號的位置
? ? ? ? let index2 = email.lastIndexOf('.')
? ? ? ? // index1>0 表示必須包含@符號,并且還不能是第一位
? ? ? ? // index2<email.length-1 表示必須包含.符號余蟹,并且還不能是最后一位
? ? ? ? // index2-1>index1 表示.符號必須在@符號的后面卷胯,而且中間至少隔一位
? ? ? ? if(index1>0 && index2<email.length-1 && index2-1>index1){
? ? ? ? ? ? alert('郵箱格式正確')
? ? ? ? }else{
? ? ? ? ? ? alert('郵箱格式錯誤')
? ? ? ? }
? ? </script>
</body>
</html>
彈窗顯示為:
2.輸入登錄名和密碼,要求登錄名長度為2-4位威酒,密碼長度是6-10位窑睁,用戶名不能是全數(shù)字
代碼:
<!DOCTYPE html>
<html lang="en">
<head>
? ? <meta charset="UTF-8">
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">
? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">
? ? <title>字符串練習2</title>
</head>
<body>
? ? <script>
? ? ? ? // 輸入登錄名和密碼挺峡,要求登錄名長度為2-4位,密碼長度是6-10位担钮,用戶名不能是全數(shù)字
? ? ? ? let loginId = prompt('請輸入登錄名(2-4位):')
? ? ? ? let loginPwd = prompt('請輸入密碼(6-10位):')
? ? ? ? let len1 = loginId.length? //登錄名長度
? ? ? ? let len2 = loginPwd.length? //密碼長度
? ? ? ? //先判斷登錄名
? ? ? ? if(len1>=2 && len1<=4 && isNaN(loginId)){
? ? ? ? ? ? //再判斷密碼
? ? ? ? ? ? if(len2>=6 && len2<=10){
? ? ? ? ? ? ? ? alert('登錄成功')
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? alert('密碼長度是6-10位')
? ? ? ? ? ? }
? ? ? ? }else{
? ? ? ? ? ? alert('登錄名長度必須是2-4位橱赠,登錄名不能是全數(shù)字')
? ? ? ? }
? ? </script>
</body>
</html>
彈窗顯示為:
3.輸入手機號碼,要求長度必須是11位箫津,第一位必須是1狭姨,后面的必須是數(shù)字
代碼:
<!DOCTYPE html>
<html>
<head>
? ? <meta charset="UTF-8">
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">
? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">
? ? <title>字符串練習3</title>
</head>
<body>
? ? <script>
? ? ? ? // 輸入手機號碼,要求長度必須是11位苏遥,第一位必須是1饼拍,后面的必須是數(shù)字
? ? ? ? let tel = prompt('請輸入手機號:')
? ? ? ? let len = tel.length? //獲取手機號的長度
? ? ? ? let first = tel[0]? ? //獲取第一位數(shù)字
? ? ? ? let next = tel.slice(1)? //從第二位到最后全部截取
? ? ? ? //粗略的判斷
? ? ? ? /* if(len==11 && first==1 && !isNaN(next)){
? ? ? ? ? ? alert('手機號碼正確')
? ? ? ? }else{
? ? ? ? ? ? alert('手機號碼錯誤')
? ? ? ? } */
? ? ? ? //詳細的判斷
? ? ? ? if(len!=11){
? ? ? ? ? ? alert('手機號碼必須是11位')
? ? ? ? }else if(first!=1){
? ? ? ? ? ? alert('手機號碼的第一位必須是1')
? ? ? ? }else if(isNaN(next)){
? ? ? ? ? ? alert('手機號碼必須是全數(shù)字')
? ? ? ? }else{
? ? ? ? ? ? alert('手機號碼正確')
? ? ? ? }
? ? </script>
</body>
</html>
彈窗顯示為:
3.數(shù)組
變量:就是在內(nèi)存中,開辟一個合適的空間暖眼,存儲一份對應(yīng)的數(shù)據(jù)
數(shù)組:就是在內(nèi)層中惕耕,開辟一段連續(xù)的空間,存儲一組數(shù)據(jù)
創(chuàng)建數(shù)組的第一種方式诫肠,使用數(shù)組的構(gòu)造函數(shù)司澎,new一個數(shù)組類型的對象
let arr1 = new Array(5)
創(chuàng)建數(shù)組的第二種方式:使用字面量方式直接定義
let arr2 = ["hello","world"]
length屬性,返回的是數(shù)組的長度
根據(jù)數(shù)組的下標(索引)栋豫,向數(shù)組中存放數(shù)據(jù)挤安,數(shù)組中可以存放任意類型的數(shù)據(jù)
注意:在創(chuàng)建數(shù)組對象時,可以給一個固定的長度丧鸯,但是沒有意義蛤铜,因為在js中數(shù)組的長度是可以隨意變化的
代碼:
<!DOCTYPE html>
<html>
<head>
? ? <meta charset="UTF-8">
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">
? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">
? ? <title>數(shù)組</title>
</head>
<body>
? ? <script>
? ? ? ? // 數(shù)組:就是在內(nèi)存中,開辟一段連續(xù)的空間丛肢,存儲一組數(shù)據(jù)
? ? ? ? // 如果需要維護多組數(shù)據(jù)围肥,之前我們需要定義很多個變量,維護起來會相對比較麻煩
? ? ? ? let score1 = 55
? ? ? ? let score2 = 66
? ? ? ? let score3 = 77
? ? ? ? let score4 = 88
? ? ? ? let score5 = 99
? ? ? ? // 通過變量名獲取變量中保存的數(shù)據(jù)
? ? ? ? let sum1 = score1+score2
? ? ? ? console.log(sum1);
? ? ? ? console.log('--------------------------');
? ? ? ? // 現(xiàn)在可以通過一個數(shù)組統(tǒng)一維護
? ? ? ? let scores = new Array(5)? //創(chuàng)建一個長度為5的數(shù)組空間(在內(nèi)存中連續(xù)開辟了一個長度為5的存儲空間)
? ? ? ? // 通過數(shù)組的下標蜂怎,往數(shù)組中存儲數(shù)據(jù)
? ? ? ? scores[0] = 55
? ? ? ? scores[3] = 66
? ? ? ? // 通過數(shù)組的下標穆刻,從數(shù)組的指定空間里面獲取數(shù)據(jù)
? ? ? ? let sum2 = scores[0] + scores[3]
? ? ? ? console.log(sum2);
? ? ? ? console.log(scores);
? ? ? ? console.log('-------------------------');
? ? ? ? // 注意:在其他的編程語言中,定義數(shù)組時杠步,必須要明確數(shù)組的長度氢伟,但是,js中不需要幽歼。
? ? ? ? // 在js中朵锣,數(shù)組的長度是彈性的,
? ? ? ? let scores2 = new Array()
? ? ? ? scores2[0] = 55
? ? ? ? scores2[8] = 66
? ? ? ? console.log(scores2);
? ? ? ? console.log('-------------------------');
? ? ? ? // 在js中甸私,定義數(shù)組有兩種方式:1.采用數(shù)組的構(gòu)造函數(shù)new诚些,2.使用字面量直接賦值
? ? ? ? let scores3 = new Array('蘋果','香蕉')
? ? ? ? console.log(scores3);
? ? ? ? let scores4 = ['葡萄','榴蓮']
? ? ? ? console.log(scores4);
? ? ? ? // length屬性,返回數(shù)組的長度
? ? ? ? console.log(scores4.length);
? ? </script>
</body>
</html>
控制臺顯示為:
4.數(shù)組的常用方法
1.concat()方法皇型,用于合并兩個或多個數(shù)組诬烹,返回一個全新的數(shù)組
2.copyWithin()方法助析,從數(shù)組的指定位置拷貝元素到數(shù)組的另一個指定位置中
注意:第一個參數(shù)是目標位置,第二個參是拷貝元素的起始位椅您,第三個參數(shù)是拷貝元素的結(jié)束位置
如果不設(shè)置第三個參數(shù)外冀,拷貝元素結(jié)束位置就是目標位置的前一位
3.fill()方法,使用一個固定值來填充數(shù)組
4.includes()方法掀泳,從數(shù)組中檢查指定的數(shù)據(jù)是否存在雪隧,存在返回true,不存在返回false
5.indexOf()方法员舵,從數(shù)組中檢查指定的數(shù)據(jù)的位置(從前往后找第一個)脑沿,不存在返回-1
6.lastIndexOf()方法,從數(shù)組中檢查指定的數(shù)據(jù)的位置(從后往前找第一個)马僻,不存在返回-1
7.isArray()方法庄拇,用于檢查指定的對象是否是數(shù)組,注意:該方法屬于Array類型韭邓,不屬于Arrary的對象
8.join()方法措近,用于將一個數(shù)組根據(jù)某個字符串拼接成字符串,該方法不傳參數(shù)女淑,默認是根據(jù)逗號拼接
9.push()方法瞭郑,向數(shù)組的末尾添加一個或更多元素,并返回新的長度
10.pop()方法鸭你,刪除數(shù)組的最后一個元素并返回刪除的元素
11.unshift()方法屈张,向數(shù)組的開頭添加一個或更多元素,并返回新的長度
12.shift()方法袱巨,刪除并返回數(shù)組的第一個元素
13.reverse()方法阁谆,反轉(zhuǎn)數(shù)組的元素順序
14.slice()方法,選取數(shù)組的一部分愉老,并返回一個新數(shù)組场绿。注意:該方法的第一個參數(shù)是起始位置,第二個參數(shù)是結(jié)束位置(取不到結(jié)束位置)俺夕。 第二個參數(shù)可以省略裳凸,表示從起始位置到最后全部返回
15.splice()方法贱鄙,從數(shù)組中添加或刪除元素? 劝贸。如何刪除顶考,該方法需要傳兩個參數(shù):第一個是起始位置蜜唾,第二個是刪除長度 别垮。如果第二個參數(shù)不傳犬绒,就表示從起始位置往后全部刪除暮的。刪除方法,刪除的是原始數(shù)組里面的數(shù)據(jù)藏研,返回的是刪除的數(shù)據(jù)孽锥。該方法也可以傳三個參數(shù),第三個參數(shù)就是刪除部分插入的新內(nèi)容
16.toString()方法引有,把數(shù)組轉(zhuǎn)換為字符串瓣颅,并返回結(jié)果
代碼:
<!DOCTYPE html>
<html>
<head>
? ? <meta charset="UTF-8">
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">
? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">
? ? <title>數(shù)組的常用方法</title>
</head>
<body>
? ? <script>
? ? ? ? // concat()方法,用于合并兩個或多個數(shù)組譬正,返回一個全新的數(shù)組
? ? ? ? let arr1 = [11,22,33]
? ? ? ? let arr2 = [44,55,66]
? ? ? ? let arr3 = arr1.concat(arr2)
? ? ? ? console.log(arr3);
? ? ? ? console.log('----------------------');
? ? ? ? /*
? ? ? ? ? ? copyWithin()方法宫补,從數(shù)組的指定位置拷貝元素到數(shù)組的另一個指定位置中
? ? ? ? ? ? 注意:第一個參數(shù)是目標位置,第二個參是拷貝元素的起始位曾我,第三個參數(shù)是拷貝元素的結(jié)束位置
? ? ? ? ? ? 如果不設(shè)置第三個參數(shù)粉怕,拷貝元素結(jié)束位置就是目標位置的前一位
? ? ? ? */
? ? ? ? let arr4 = [11,22,33,44,55,66,77,88]
? ? ? ? arr4.copyWithin(2,4,6)
? ? ? ? console.log(arr4);
? ? ? ? console.log('----------------------');
? ? ? ? // fill()方法,使用一個固定值來填充數(shù)組
? ? ? ? let arr5 = new Array(5)
? ? ? ? arr5.fill(50)
? ? ? ? console.log(arr5);
? ? ? ? console.log('----------------------');
? ? ? ? // includes()方法抒巢,從數(shù)組中檢查指定的數(shù)據(jù)是否存在贫贝,存在返回true,不存在返回false
? ? ? ? // indexOf()方法蛉谜,從數(shù)組中檢查指定的數(shù)據(jù)的位置(從前往后找第一個)稚晚,不存在返回-1
? ? ? ? // lastIndexOf()方法,從數(shù)組中檢查指定的數(shù)據(jù)的位置(從后往前找第一個)型诚,不存在返回-1
? ? ? ? let arr6 = [11,22,33,44,55,44,77,88]
? ? ? ? console.log(arr6.includes(44));
? ? ? ? console.log(arr6.includes(38));
? ? ? ? console.log(arr6.indexOf(44));
? ? ? ? console.log(arr6.indexOf(38));
? ? ? ? console.log(arr6.lastIndexOf(44));
? ? ? ? console.log(arr6.lastIndexOf(38));
? ? ? ? console.log('----------------------');
? ? ? ? // isArray()方法蜈彼,用于檢查指定的對象是否是數(shù)組,注意:該方法屬于Array類型俺驶,不屬于Arrary的對象
? ? ? ? let str1 = 'hello'
? ? ? ? console.log(Array.isArray(str1));
? ? ? ? console.log(Array.isArray(arr6));
? ? ? ? console.log('----------------------');
? ? ? ? // join()方法幸逆,用于將一個數(shù)組根據(jù)某個字符串拼接成字符串,該方法不傳參數(shù)暮现,默認是根據(jù)逗號拼接
? ? ? ? console.log(arr6.join('你好呀'));
? ? ? ? console.log(arr6.join(''));
? ? ? ? console.log(arr6.join());
? ? ? ? console.log('-----------以下是核心方法还绘,必須無條件掌握-----------');
? ? ? ? let arr7 = [11,22,33]
? ? ? ? // push()方法,向數(shù)組的末尾添加一個或更多元素栖袋,并返回新的長度
? ? ? ? arr7.push(44)
? ? ? ? console.log(arr7);
? ? ? ? // pop()方法拍顷,刪除數(shù)組的最后一個元素并返回刪除的元素
? ? ? ? arr7.pop()
? ? ? ? console.log(arr7);
? ? ? ? // unshift()方法,向數(shù)組的開頭添加一個或更多元素塘幅,并返回新的長度
? ? ? ? arr7.unshift(55)
? ? ? ? console.log(arr7);
? ? ? ? // shift()方法昔案,刪除并返回數(shù)組的第一個元素
? ? ? ? arr7.shift()
? ? ? ? console.log(arr7);
? ? ? ? // reverse()方法,反轉(zhuǎn)數(shù)組的元素順序
? ? ? ? arr7.reverse()
? ? ? ? console.log(arr7);
? ? ? ? console.log('----------------------');
? ? ? ? /*
? ? ? ? ? ? slice()方法电媳,選取數(shù)組的一部分踏揣,并返回一個新數(shù)組
? ? ? ? ? ? 注意:該方法的第一個參數(shù)是起始位置,第二個參數(shù)是結(jié)束位置(取不到結(jié)束位置)
? ? ? ? ? ? 第二個參數(shù)可以省略匾乓,表示從起始位置到最后全部返回
? ? ? ? */
? ? ? ? let arr8 = [11,22,33,44,55,66,77,88,99]
? ? ? ? console.log(arr8.slice(3,6));
? ? ? ? console.log(arr8.slice(3));
? ? ? ? // repeat()是字符串的方法捞稿,用于重復指定的字符串多少次
? ? ? ? console.log('-'.repeat(30));
? ? ? ? /*
? ? ? ? ? ? splice()方法,從數(shù)組中添加或刪除元素
? ? ? ? ? ? 如何刪除,該方法需要傳兩個參數(shù):第一個是起始位置娱局,第二個是刪除長度
? ? ? ? ? ? 如果第二個參數(shù)不傳彰亥,就表示從起始位置往后全部刪除
? ? ? ? ? ? 刪除方法,刪除的是原始數(shù)組里面的數(shù)據(jù)衰齐,返回的是刪除的數(shù)據(jù)
? ? ? ? ? ? 該方法也可以傳三個參數(shù)任斋,第三個參數(shù)就是刪除部分插入的新內(nèi)容
? ? ? ? */
? ? ? ? // arr8.splice(4,3)? //刪除指定區(qū)間的數(shù)據(jù)
? ? ? ? // arr8.splice(4)? ? //從起始位置往后全部刪除
? ? ? ? // arr8.splice(4,3,'哈哈')? //刪除部分的內(nèi)容替換成新的內(nèi)容(修改數(shù)組的內(nèi)容)
? ? ? ? arr8.splice(4,0,'哈哈')? ? //在數(shù)組的指定位置插入內(nèi)容
? ? ? ? console.log(arr8);
? ? ? ? // toString()方法,把數(shù)組轉(zhuǎn)換為字符串耻涛,并返回結(jié)果
? ? ? ? // 效果跟join方法不傳參數(shù)一樣仁卷。
? ? ? ? console.log(arr8.toString());
? ? </script>
</body>
</html>
控制臺顯示為:
5.數(shù)組練習題
1.如何反轉(zhuǎn)字符串? (先將字符串轉(zhuǎn)為數(shù)組,再將數(shù)組反轉(zhuǎn)犬第,然后將反轉(zhuǎn)后的數(shù)組锦积,再轉(zhuǎn)為字符串)
代碼:
<!DOCTYPE html>
<html>
<head>
? ? <meta charset="UTF-8">
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">
? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">
? ? <title>如何反轉(zhuǎn)字符串</title>
</head>
<body>
? ? <script>
? ? ? ? // split()方法,用于將字符串根據(jù)某個字符串打散成數(shù)組
? ? ? ? let s1 = "我喜歡吃蘋果歉嗓,喜歡吃桃子丰介,喜歡吃香蕉"
? ? ? ? // 將字符串根據(jù)“喜歡”打散成數(shù)組
? ? ? ? console.log(s1.split('喜歡'));
? ? ? ? // 將字符串中的所有字符打散成數(shù)組
? ? ? ? console.log(s1.split(''));
? ? ? ? console.log('---------------------------');
? ? ? ? let str = '好好學習,天天向上'
? ? ? ? // 01.將字符串打散成數(shù)組
? ? ? ? let arr = str.split('')
? ? ? ? // 02.數(shù)組反轉(zhuǎn)一下
? ? ? ? arr.reverse()
? ? ? ? // 03.將數(shù)組拼接陳字符串
? ? ? ? let str2 = arr.join('')
? ? ? ? console.log(str2);
? ? ? ? //字符串和數(shù)組的所有方法鉴分,可以鏈式調(diào)用
? ? ? ? console.log(str.split('').reverse().join(''));
</script>
</body>
</html>
控制臺顯示為:
2.學生管理系統(tǒng)? (定義四個數(shù)組哮幢,分別存儲學生的學號,姓名志珍,年齡橙垢,性別)
代碼:
<!DOCTYPE html>
<html>
<head>
? ? <meta charset="UTF-8">
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">
? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">
? ? <title>學生管理系統(tǒng)</title>
</head>
<body>
? ? <script>
? ? ? ? // 定義4個數(shù)組,管理學生的:學號伦糯,姓名柜某,年齡,性別
? ? ? ? let nos = ['1001', '1002']
? ? ? ? let names = ['張三', '李四']
? ? ? ? let ages = [22, 23]
? ? ? ? let sexs = ['男', '女']
? ? ? ? let menu = 0? //定義一個菜單變量
? ? ? ? do {
? ? ? ? ? ? menu = prompt('******學生管理系統(tǒng)******\n1.查看學生信息 2.添加學生信息 3.修改學生信息 4.刪除學生 0.退出系統(tǒng)')
? ? ? ? ? ? switch (menu) {
? ? ? ? ? ? ? ? case '1':
? ? ? ? ? ? ? ? ? ? console.log('*******************查詢學生信息*******************');
? ? ? ? ? ? ? ? ? ? console.log('學號\t姓名\t年齡\t性別');
? ? ? ? ? ? ? ? ? ? //循環(huán)數(shù)組敛纲,輸出所有的學生信息
? ? ? ? ? ? ? ? ? ? for (let i = 0; i < nos.length; i++) {
? ? ? ? ? ? ? ? ? ? ? ? console.log(`${nos[i]}\t${names[i]}\t${ages[i]}\t\t${sexs[i]}`);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case '2':
? ? ? ? ? ? ? ? ? ? //輸入學生基本信息
? ? ? ? ? ? ? ? ? ? //輸入學號
? ? ? ? ? ? ? ? ? ? let no = prompt('請輸入學號')
? ? ? ? ? ? ? ? ? ? //判斷學號不能重復
? ? ? ? ? ? ? ? ? ? if (nos.includes(no)) {
? ? ? ? ? ? ? ? ? ? ? ? alert('學號不能重復')
? ? ? ? ? ? ? ? ? ? ? ? continue? //跳過本次循環(huán)
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? //輸入姓名
? ? ? ? ? ? ? ? ? ? let name = prompt('請輸入姓名')
? ? ? ? ? ? ? ? ? ? //輸入年齡
? ? ? ? ? ? ? ? ? ? let age = prompt('請輸入年齡')
? ? ? ? ? ? ? ? ? ? if (isNaN(age)) {
? ? ? ? ? ? ? ? ? ? ? ? alert('年齡必須是數(shù)字')
? ? ? ? ? ? ? ? ? ? ? ? continue
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? //輸入性別
? ? ? ? ? ? ? ? ? ? let sex = prompt('請輸入性別')
? ? ? ? ? ? ? ? ? ? if (!(sex == '男' || sex == '女')) {
? ? ? ? ? ? ? ? ? ? ? ? alert('性別只能是 男 或 女')
? ? ? ? ? ? ? ? ? ? ? ? continue
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? //將學生的基本信息喂击,添加到數(shù)組中
? ? ? ? ? ? ? ? ? ? nos.push(no)
? ? ? ? ? ? ? ? ? ? names.push(name)
? ? ? ? ? ? ? ? ? ? ages.push(age)
? ? ? ? ? ? ? ? ? ? sexs.push(sex)
? ? ? ? ? ? ? ? ? ? alert('添加成功!')
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case '3':
? ? ? ? ? ? ? ? ? ? // 輸入學號淤翔,根據(jù)學號翰绊,找到它在數(shù)組中的位置
? ? ? ? ? ? ? ? ? ? let no1 = prompt('請輸入需要修改學生的學號:')
? ? ? ? ? ? ? ? ? ? //查找學號在數(shù)組中的位置
? ? ? ? ? ? ? ? ? ? let index = nos.indexOf(no1)
? ? ? ? ? ? ? ? ? ? //判斷該學號是否存在
? ? ? ? ? ? ? ? ? ? if (index == -1) {
? ? ? ? ? ? ? ? ? ? ? ? alert('您輸入的學號不存在!')
? ? ? ? ? ? ? ? ? ? ? ? continue
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? //輸入姓名
? ? ? ? ? ? ? ? ? ? let name1 = prompt('請重新輸入姓名')
? ? ? ? ? ? ? ? ? ? //輸入年齡
? ? ? ? ? ? ? ? ? ? let age1 = prompt('請重新輸入年齡')
? ? ? ? ? ? ? ? ? ? if (isNaN(age1)) {
? ? ? ? ? ? ? ? ? ? ? ? alert('年齡必須是數(shù)字')
? ? ? ? ? ? ? ? ? ? ? ? continue
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? //輸入性別
? ? ? ? ? ? ? ? ? ? let sex1 = prompt('請重新輸入性別')
? ? ? ? ? ? ? ? ? ? if (!(sex1 == '男' || sex1 == '女')) {
? ? ? ? ? ? ? ? ? ? ? ? alert('性別只能是 男 或 女')
? ? ? ? ? ? ? ? ? ? ? ? continue
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? // 更新數(shù)組中的信息
? ? ? ? ? ? ? ? ? ? names[index] = name1
? ? ? ? ? ? ? ? ? ? ages[index] = age1
? ? ? ? ? ? ? ? ? ? sexs[index] = sex1
? ? ? ? ? ? ? ? ? ? alert('修改成功旁壮!')
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case '4':
? ? ? ? ? ? ? ? ? ? // 輸入學號监嗜,根據(jù)學號,找到它在數(shù)組中的位置
? ? ? ? ? ? ? ? ? ? let no2 = prompt('請輸入需要修改學生的學號:')
? ? ? ? ? ? ? ? ? ? //查找學號在數(shù)組中的位置
? ? ? ? ? ? ? ? ? ? let index2 = nos.indexOf(no2)
? ? ? ? ? ? ? ? ? ? //判斷該學號是否存在
? ? ? ? ? ? ? ? ? ? if (index2 == -1) {
? ? ? ? ? ? ? ? ? ? ? ? alert('您輸入的學號不存在抡谐!')
? ? ? ? ? ? ? ? ? ? ? ? continue
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? // 刪除數(shù)組中對應(yīng)的數(shù)據(jù)
? ? ? ? ? ? ? ? ? ? nos.splice(index2,1)
? ? ? ? ? ? ? ? ? ? names.splice(index2,1)
? ? ? ? ? ? ? ? ? ? ages.splice(index2,1)
? ? ? ? ? ? ? ? ? ? sexs.splice(index2,1)
? ? ? ? ? ? ? ? ? ? alert('刪除成功裁奇!')
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? alert('成功退出系統(tǒng)!歡迎下次使用童叠!')
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? } while (menu != 0);
? ? </script>
</body>
</html>
彈窗顯示為:
3.隨機生成一組雙色球號碼框喳,存放到數(shù)組中
雙色球號碼的規(guī)則是:前六組號碼是1-32之間不重復的隨機數(shù),第七組號碼是1-16之間的隨機數(shù)
代碼:
<!DOCTYPE html>
<html>
<head>
? ? <meta charset="UTF-8">
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">
? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">
? ? <title>作業(yè)1</title>
</head>
<body>
? ? <script>
? ? ? ? // 隨機生成一組雙色球號碼厦坛,存放到數(shù)組中
? ? ? ? // 雙色球號碼的規(guī)則是:前六組號碼是1-32之間不重復的隨機數(shù)五垮,第七組號碼是1-16之間的隨機數(shù)
? ? ? ? let nums = []
? ? ? ? //循環(huán)6次,生成前6組號碼?
? ? ? ? for(let i=0;i<6;i++){
? ? ? ? ? ? let num = parseInt(Math.random()*32)+1
? ? ? ? ? ? // 判斷每次生成的隨機數(shù)杜秸,在數(shù)組中是否已經(jīng)存在放仗,
? ? ? ? ? ? if(!nums.includes(num)){
? ? ? ? ? ? ? ? // 如果不存在添加到數(shù)組中
? ? ? ? ? ? ? ? nums.push(num)
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? // 如果存在,重新再生成一次
? ? ? ? ? ? ? ? i--
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? nums[6] = parseInt(Math.random()*16)+1
? ? ? ? console.log(nums);
? ? </script>
</body>
</html>