9、字符串和數(shù)學(xué)常用方法

字符串方法和屬性:

和數(shù)組一樣,字符串也有自己的方法,來幫助我們處理字符串

原始值,比如“Bill Gates”,無法擁有屬性和方法(因?yàn)樗鼈儾皇菍?duì)象)。
但是通過 JavaScript,方法和屬性也可用于原始值,因?yàn)樵趫?zhí)行方法和屬性時(shí) JavaScript 將原始值視為對(duì)象。

字符串長度length:

  • length屬性返回字符串長度
//聲明一個(gè)變量,然后將一個(gè)字符串賦值給它
var text = "hello word";
//聲明一個(gè)變量用來接收length返回的值
var sln = text.length
console.log(sln);
//輸出結(jié)果為:10

總結(jié): 可以看到字符串的長度包含了字符串中的所有內(nèi)容,空格也包含在內(nèi)

查找字符串中的某個(gè)字符:

查找字符首次出現(xiàn)的位置indexOf():

  • indexOf()方法返回字符串中指定文本首次出現(xiàn)的索引(位置)
//聲明一個(gè)變量,然后將一個(gè)字符串賦值給它
var text = "hello word";
//聲明一個(gè)變量用來接收indexOf()返回的值
var sln = text.indexOf("o");
console.log(sln);
//輸出結(jié)果為:4

查找字符最后一次出現(xiàn)的位置lastIndexOf():

  • lastIndexOf() 方法返回指定文本在字符串中最后一次出現(xiàn)的索引:
//聲明一個(gè)變量,然后將一個(gè)字符串賦值給它
var text = "hello word";
//聲明一個(gè)變量用來接收lastIndexOf()返回的值
var sln = text.lastIndexOf("o");
console.log(sln);
//輸出結(jié)果為:7

我們?cè)囍樵円粋€(gè)不存在的元素

//聲明一個(gè)變量,然后將一個(gè)字符串賦值給它
var text = "hello word";
//聲明一個(gè)變量用來接收lastIndexOf()返回的值
var sln = text.lastIndexOf("z");
var sln1 = text.indexOf("z");
console.log(sln);
console.log(sln1);
//輸出結(jié)果為:-1

這兩種方法都可以傳入第二個(gè)參數(shù)

//聲明一個(gè)變量,然后將一個(gè)字符串賦值給它
var text = "hello word";
//聲明一個(gè)變量用來接收lastIndexOf()返回的值
var sln = text.lastIndexOf("o",5);//從參數(shù)位置往后查
var sln1 = text.indexOf("l",3);//從參數(shù)位置往前查
console.log(sln);
console.log(sln1);
//輸出結(jié)果為:4    3

總結(jié):
1、字符串可以使用索引,它里面的每個(gè)元素都有相應(yīng)的索引
2、字符串的索引與數(shù)組相同,都是從0開始計(jì)數(shù),且字符串中所有元素都擁有索引,包括空格
3、如果未找到字符,indexOf()lastIndexOf()均返回 -1。
4、兩個(gè)方法都可以傳入?yún)?shù)作為查詢起始位置,不同的是,indexOf()方法是從參數(shù)位置向尾部查,而lastIndexOf()方法是從參數(shù)位置向頭部查詢

截取部分字符串:

在字符串方法中有三種截取字符串片段的方法:

slice()方法:

  • slice() 提取字符串的某個(gè)部分并在新字符串中返回被提取的部分
    看著是不是很熟悉?沒錯(cuò)這就是在數(shù)組中用過的方法,它在字符串中同樣有效
//創(chuàng)建一個(gè)變量并賦值給他一個(gè)字符串
var text = "I love you";
//創(chuàng)建一個(gè)變量用來接收截取到的片段
var str = text.slice(2,6);
console.log(str);//輸出結(jié)果:love
console.log(text);//輸出結(jié)果:I love you

總結(jié):
1、很明顯,與數(shù)組一樣,slice()方法設(shè)置的兩個(gè)參數(shù)分別是開始位置和終止位置,截取的片段從起始索引開始,在終止索引之前結(jié)束.
2、slice()方法將截取到的字符串作為返回值返回,但是并不會(huì)改變?cè)址?br> 3、若忽略第二個(gè)參數(shù),則將截取字符串剩余部分
注意: 與數(shù)組索引一樣,字符串的操作同樣可以將索引設(shè)為負(fù)值,反向查詢

substring()方法:

-substring()類似于slice(),但是substring()方法不能接受負(fù)值索引

//創(chuàng)建一個(gè)變量并賦值給他一個(gè)字符串
var text = "I love you";
//創(chuàng)建一個(gè)變量用來接收截取到的片段
var str = text.substring(2,6);
console.log(str);//輸出結(jié)果:love
console.log(text);//輸出結(jié)果:I love you

總結(jié):
1、它的作用與slice()方法一樣,設(shè)置的兩個(gè)參數(shù)同樣是開始和結(jié)束位置,且并不會(huì)改變?cè)址?br> 2、唯一的區(qū)別就是不能傳負(fù)值,不然負(fù)值將成為0
3、它截取兩個(gè)位置之間的字符,所以對(duì)實(shí)參的先后順序沒有要求.但一般都是按照開始在前結(jié)束在后的習(xí)慣

substr():

  • substr()方法類似于slice(),但是substr()的第二個(gè)參數(shù)是截取字符串的長度(數(shù)量).
//創(chuàng)建一個(gè)變量并賦值給他一個(gè)字符串
var text = "I love you";
//創(chuàng)建一個(gè)變量用來接收截取到的片段
var str = text.substr(2,4);
console.log(str);//輸出結(jié)果:love
console.log(text);//輸出結(jié)果:I love you
//注意,我將實(shí)參換為了 2、4

總結(jié):
1、 同樣是截取字符串,它的兩個(gè)參數(shù)第一個(gè)是開始位置,第二個(gè)是截取長度
2、如果省略第二個(gè)字符,則截取剩下的所有部分
3、第一個(gè)參數(shù)可以傳負(fù)值,從尾部開始計(jì)算位置,但是第二個(gè)參數(shù)不能為負(fù)
4、substr()并不會(huì)改變?cè)址?/p>

連接字符串:

concat():

這個(gè)方法也是和數(shù)組的一樣,前面綁定字符串的變量名,將要拼接進(jìn)來的字符串作為參數(shù)傳進(jìn)來

//創(chuàng)建一個(gè)變量并賦值給他一個(gè)字符串
var text = "I love you";
//創(chuàng)建一個(gè)變量用來接收新的字符串
var str = text.concat("我愛你");
console.log(str);//輸出結(jié)果:I love you我愛你
console.log(text);//輸出結(jié)果:I love you
//新添加的字符串被拼接到了源字符串的后面

還記得嗎?我們?cè)谥暗臅r(shí)候說過,加號(hào)(+)在作用于字符串的時(shí)候是有拼接的作用的,它和concat()方法是等效的,所以我們會(huì)常用加號(hào)(+).
另外,是不是發(fā)現(xiàn)所有的字符串方法都不會(huì)對(duì)原字符串產(chǎn)生影響?我們引用w3school的話:

所有字符串方法都會(huì)返回新字符串。它們不會(huì)修改原始字符串。
正式地說:字符串是不可變的:字符串不能更改,只能替換。

提取字符串字符:

有兩個(gè)提取字符串字符的安全方法:

返回指定位置的字符charAt():

  • charAt() 方法返回字符串中指定下標(biāo)(位置)的字符串:
//創(chuàng)建一個(gè)變量并賦值給他一個(gè)字符串
var text = "I love you";
//創(chuàng)建一個(gè)變量用來接收字符
var str = text.charAt(5);
console.log(str);//輸出結(jié)果:e

返回指定位置的Unicode編碼charCodeAt():

  • charCodeAt() 方法返回字符串中指定索引的字符 unicode 編碼:
//創(chuàng)建一個(gè)變量并賦值給他一個(gè)字符串
var text = "I love you";
//創(chuàng)建一個(gè)變量用來接收截取到的片段
var str = text.charCodeAt(5);
console.log(str);//輸出結(jié)果:101

將字符串分割并轉(zhuǎn)化為數(shù)組:

  • 可以通過 split() 將字符串分割并轉(zhuǎn)換為數(shù)組:
    split();其中的參數(shù)傳的是分割字符:
//創(chuàng)建一個(gè)變量并賦值給他一個(gè)字符串
var text = "I love you";
//創(chuàng)建一個(gè)變量用來接收數(shù)組
var str = text.split(" ");
console.log(str);
//輸出結(jié)果:["I", "love", "you"]

實(shí)參傳的是一個(gè)空格,分割的時(shí)候就以空格為分割字符,從空格處分割開

//創(chuàng)建一個(gè)變量并賦值給他一個(gè)字符串
var text = "I love you";
//創(chuàng)建一個(gè)變量用來接收數(shù)組
var str = text.split("");
console.log(str);
//輸出結(jié)果:["I", " ", "l", "o", "v", "e", " ", "y", "o", "u"]

實(shí)參傳的是一個(gè)空串,分割的時(shí)候就會(huì)把每一個(gè)字符都分開,包括空格

//創(chuàng)建一個(gè)變量并賦值給他一個(gè)字符串
var text = "I love you";
//創(chuàng)建一個(gè)變量用來接收數(shù)組
var str = text.split("o");
console.log(str);
//輸出結(jié)果:["I l", "ve y", "u"]

實(shí)參傳的是o,字符串便從o處被分割

刪除字符串兩端的空白符:

trim()方法,此方法不適用于IE8或更低版本,如果想支持IE8,可搭配正則表達(dá)式replace()方法代替:

//創(chuàng)建一個(gè)變量并賦值給他一個(gè)字符串
var text = "        I love you      ";
//創(chuàng)建一個(gè)變量用來接收新字符串
var str = text.trim();
console.log(str);
//輸出結(jié)果: I love you

字符串兩端的字符已被去除

轉(zhuǎn)換大小寫:

通過toUpperCase()把字符串轉(zhuǎn)換為大寫

//創(chuàng)建一個(gè)變量并賦值給他一個(gè)字符串
var text = "I love you";
//創(chuàng)建一個(gè)變量用來接收新字符串
var str = text.toUpperCase();
console.log(str);
//輸出結(jié)果: I LOVE YOU

通過toLoweCase把字符串轉(zhuǎn)換為小寫:

//創(chuàng)建一個(gè)變量并賦值給他一個(gè)字符串
var text = "I LOVE YOU";
//創(chuàng)建一個(gè)變量用來接收新字符串
var str = text.toUpperCase();
console.log(str);
//輸出結(jié)果: I love you

還有幾個(gè)需搭配正則表達(dá)式

  • 這幾個(gè)都需要搭配著正則表達(dá)式來用,所以等講到正則再講這個(gè)
    match() 正則匹配
    replace() 正則替換
    search()

JS中字符串方法有很多,如果上面沒有你需要的,請(qǐng)看這里

數(shù)學(xué)方法和屬性:

這里先介紹一些常用的數(shù)學(xué)方法:Math對(duì)象,它們都是被封裝好的工具,他們很簡單,直接拿來使用就好:

圓周率Math.PI:

  • 直接返回圓周率
console.log(Math.PI);
//輸出:
3.141592653589793

返回參數(shù)的絕對(duì)值:

  • 使用Math.abs();取絕對(duì)值
console.log(Math.abs(-5));
//輸出結(jié)果為5

數(shù)字的取整

四舍五入Math.round():

  • 將傳入的數(shù)字進(jìn)行四舍五入并返回:
console.log(Math.round(2.6));
//輸出3
console.log(Math.round(3.2));
//輸出3

向上去整Math.ceil();

  • 若輸入的值小數(shù)點(diǎn)后不等零,則向上舍入,比如1.2向上舍入等于2
console.log(Math.ceil(3.2));
//輸出結(jié)果為:4

向下取整Math.floor():

  • 若輸入的值小數(shù)點(diǎn)后不等于零,則舍棄掉小數(shù)點(diǎn)后的數(shù),如3.9向下舍入等于3
console.log(Math.floor(3.9))
//輸出結(jié)果為:3

獲取最大或最小值:

獲取最小值Math.min():

  • 使用Math.min()查找參數(shù)列表里的最小值:
var numMin = Math.min(0,15,30,-5,21,350,-70,55)
console.log(numMin);
//輸出結(jié)果為-70

獲取最大值Math.max():

  • 使用Math.max()查找參數(shù)列表里的最大值:
var numMax = Math.max(0,15,30,-5,21,350,-70,55)
console.log(numMax);
//輸出結(jié)果為350

創(chuàng)建隨機(jī)數(shù):

創(chuàng)建隨機(jī)數(shù)這個(gè)方法在JS能用到的地方很多,所以這個(gè)是很重要的:

  • Math.random() 返回介于 0(包括) 與 1(不包括) 之間的隨機(jī)數(shù):
console.log(Math.random());
//輸出:0.392782796677708
//輸出:0.9383646077609944
//輸出:0.7952964314955755

可以看到,沒錯(cuò)輸出的值都是不同的,位數(shù)也不同,但是這樣的隨機(jī)數(shù)不是我們想要的
怎么才能得到我們想要的隨機(jī)數(shù)呢?我們來看一下:

//我想獲得0-10之間的隨機(jī)數(shù)怎么辦
var num = Math.floor(Math.random()*11);
//創(chuàng)建一個(gè)隨機(jī)數(shù)并乘以11,且向下取整
console.log(num);
//輸出的值:3 10 1 7 8 ...

可以看到,因?yàn)殡S機(jī)數(shù)的值默認(rèn)是0-1之間的小數(shù),所以我們乘以10,就變成了0-10之間的數(shù)了,但是小數(shù)怎么辦呢?我們給他取整
單向上取整的話,就會(huì)變成1-10,單向下取整的話,就會(huì)變成0-9,若是采用四舍五入的方法的話就是0-10.
所以采用向上取整,就要乘以9,向下取整,就要乘以11

更多更詳細(xì)的隨機(jī)數(shù)方法

JS中的數(shù)學(xué)方法還有很多,如果上面沒有你需要的請(qǐng)看這里

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,679評(píng)論 0 4
  • ??引用類型的值(對(duì)象)是引用類型的一個(gè)實(shí)例。 ??在 ECMAscript 中,引用類型是一種數(shù)據(jù)結(jié)構(gòu),用于將數(shù)...
    霜天曉閱讀 1,219評(píng)論 0 1
  • Javascript有很多字符串的方法,有的人有W3C的API,還可以去MDN上去找,但是我覺得API上說的不全,...
    頑皮的雪狐七七閱讀 2,368評(píng)論 0 2
  • 《Java從小白到大?!芳堎|(zhì)版已經(jīng)上架了?。?! 由字符組成的一串字符序列,稱為“字符串”,在前面的章節(jié)中也多次用到...
    tony關(guān)東升閱讀 1,275評(píng)論 0 2
  • 從孩子小學(xué)時(shí)開始做家委,到現(xiàn)在孩子初中做家委,并不是因?yàn)楹⒆釉诎嗌鲜亲畎渭獠懦蔀榧椅?,只是因?yàn)樽约禾貏e喜歡孩子,如...
    郎妹妹閱讀 11,789評(píng)論 6 10

友情鏈接更多精彩內(nèi)容