javascript中常用的方法總結(jié)

1、字符串

(1)indexOf(param1,param2) 方法返回字符串中指定文本首次出現(xiàn)的索引(位置);
(2)lastIndexOf(param1,param2) 方法返回指定文本在字符串中最后一次出現(xiàn)的索引;
(3)search() 方法搜索特定值的字符串,并返回匹配的位置;
param1需要檢索的字符串,param2開(kāi)始檢索的位置
如果未找到文本, indexOf() 和 lastIndexOf() 均返回 -1。

search() 方法無(wú)法設(shè)置第二個(gè)開(kāi)始位置參數(shù)
indexOf() 方法無(wú)法設(shè)置更強(qiáng)大的搜索值(正則表達(dá)式)
let str = 'abcdcba'
str.indexOf('b') //返回 1
str.indexOf('b',2) //返回 5
str.lastIndexOf('b') //返回 5
str.lastIndexOf('b',4) //返回1

(4)slice() 提取字符串的某個(gè)部分并在新字符串中返回被提取的部分范圍為半閉半開(kāi)
(5)substring() 類似于 slice()不同之處在于 substring() 無(wú)法接受負(fù)的索引;
(6)substr() 類似于 slice()不同之處在于第二個(gè)參數(shù)規(guī)定被提取部分的長(zhǎng)度。

let str1 = "0123456789"
let res1 = str1.slice(1,5); //返回1234
//如果省略第二個(gè)參數(shù),則該方法將裁剪字符串的剩余部分
str1.slice(5);//返回56789 
//如果某個(gè)參數(shù)為負(fù),則從字符串的結(jié)尾開(kāi)始計(jì)數(shù)
let str2 = "9876543210";
let res2 = str2.slice(-9,-5); //返回8765
str2.slice(-5); //返回43210
str2.substr(-7,6); //返回654321 第二個(gè)參數(shù)不能為負(fù),因?yàn)樗x的是長(zhǎng)度

提示:負(fù)值位置不適用 Internet Explorer 8 及其更早版本
(7)replace() 方法用另一個(gè)值替換在字符串中指定的值。
replace() 方法不會(huì)改變調(diào)用它的字符串。它返回的是新字符串。
默認(rèn)地,replace() 只替換首個(gè)匹配。
默認(rèn)地,replace() 對(duì)大小寫(xiě)敏感。

  let str = "abcABCabc"; 
  //請(qǐng)注意正則表達(dá)式不帶引號(hào)
  str.replace(/ab/g,"xx"); //返回xxcABCxxc  如需替換所有匹配,請(qǐng)使用正則表達(dá)式的 g 標(biāo)志(用于全局搜索)
  str.replace(/AB/i,"xx"); //返回xxcABCabc  如需執(zhí)行大小寫(xiě)不敏感的替換,請(qǐng)使用正則表達(dá)式 /i(大小寫(xiě)不敏感)
  str.replace("AB","xx"); //返回abcxxCabc

(8)toUpperCase() 把字符串轉(zhuǎn)換為大寫(xiě)
(9)toLowerCase() 把字符串轉(zhuǎn)換為小寫(xiě)
(10)concat() 連接兩個(gè)或多個(gè)字符串(可用于代替加運(yùn)算符)

var text = "Hello" + "!" + "World!";
var text = "Hello".concat("!","World!");

(11)trim() 方法刪除字符串兩端的空白符

//Internet Explorer 8 或更低版本不支持 trim() 方法
//如需支持 IE 8,您可搭配正則表達(dá)式使用 replace() 方法代替
let str = str = "       Hello World!        "
str.trim()
str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '')

(12)charAt() 方法返回字符串中指定下標(biāo)(位置)的字符串
(13)charCodeAt() 方法返回字符串中指定索引的字符 unicode 編碼.
(14)ECMAScript 5 (2009) 允許對(duì)字符串的屬性訪問(wèn) [ ]

使用屬性訪問(wèn)有點(diǎn)不太靠譜:

-不適用 Internet Explorer 7 或更早的版本
-它讓字符串看起來(lái)像是數(shù)組(其實(shí)并不是)
-如果找不到字符,[ ] 返回 undefined,而 charAt() 返回空字符串。
-它是只讀的。str[0] = "A" 不會(huì)產(chǎn)生錯(cuò)誤(但也不會(huì)工作!)

var str = "HELLO WORLD";
str[0];//返回 H
str.charAt(0);// 返回 H
str.charCodeAt(0);// 返回 72

(15)split() 將字符串轉(zhuǎn)換為數(shù)組。

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

2、數(shù)字

JavaScript 只有一種數(shù)值類型,JavaScript 數(shù)值始終以雙精度浮點(diǎn)數(shù)來(lái)存儲(chǔ),根據(jù)國(guó)際 IEEE 754 標(biāo)準(zhǔn),JavaScript 數(shù)值始終是 64 位的浮點(diǎn)數(shù)。整數(shù)(不使用指數(shù)或科學(xué)計(jì)數(shù)法)會(huì)被精確到 15 位,小數(shù)的最大數(shù)是 17 位,但是浮點(diǎn)的算數(shù)并不總是 100% 精準(zhǔn)(js計(jì)算時(shí),會(huì)將十進(jìn)制轉(zhuǎn)換成二進(jìn)制,再進(jìn)行計(jì)算,但有些小數(shù)轉(zhuǎn)換成二進(jìn)制時(shí)候,出現(xiàn)了無(wú)限循環(huán),由于位數(shù)有限,所以就出現(xiàn)了截取,所以就導(dǎo)致了再轉(zhuǎn)化成十進(jìn)制后結(jié)果的不精確.),可使用全局 JavaScript 函數(shù) isNaN() 來(lái)確定某個(gè)值是否是數(shù):

let x = 999999999999999;   // x 將是 999999999999999
let y = 9999999999999999;  // y 將是 10000000000000000
let x = 0.2 + 0.1;         // x 將是 0.30000000000000004
typeof NaN;  // 返回 "number"

(1)Infinity (或 -Infinity)是 JavaScript 在計(jì)算數(shù)時(shí)超出最大可能數(shù)范圍時(shí)返回的值。

var x =  2 / 0;          // x 將是 Infinity
var y = -2 / 0;          // y 將是 -Infinity

(2)絕不要用前導(dǎo)零寫(xiě)數(shù)字(比如 07)。
-一些 JavaScript 版本會(huì)把帶有前導(dǎo)零的數(shù)解釋為八進(jìn)制。
-默認(rèn)地,Javascript 把數(shù)顯示為十進(jìn)制小數(shù)。
-但是您能夠使用 toString() 方法把數(shù)輸出為十六進(jìn)制、八進(jìn)制或二進(jìn)制
-不要用new創(chuàng)建數(shù)字對(duì)象(會(huì)出現(xiàn)無(wú)法比較的問(wèn)題)

//二進(jìn)制0b開(kāi)頭
//八進(jìn)制0開(kāi)頭
//十六進(jìn)制0x開(kāi)頭
var myNumber = 128;
myNumber.toString(16);     // 返回 80
myNumber.toString(8);      // 返回 200
myNumber.toString(2);      // 返回 10000000

var x = new Number(500);             
var y = new Number(500);
x == y //返回false
typeof x //返回object

(3)toExponential() 返回字符串值,它包含已被四舍五入并使用指數(shù)計(jì)數(shù)法的數(shù)字 (參數(shù)定義小數(shù)點(diǎn)后的字符數(shù))
(4)toFixed() 返回字符串值,它包含了指定位數(shù)小數(shù)的數(shù)字
(5)toPrecision() 返回字符串值,它包含了指定長(zhǎng)度的數(shù)字

var x = 9.656;
x.toExponential(2);     // 返回 9.66e+0
x.toExponential(4);     // 返回 9.6560e+0
x.toExponential(6);     // 返回 9.656000e+0
x.toFixed(0);           // 返回 10
x.toFixed(2);           // 返回 9.66
x.toFixed(4);           // 返回 9.6560
x.toFixed(6);           // 返回 9.656000
x.toPrecision();        // 返回 9.656
x.toPrecision(1);        // 返回 1e+1 當(dāng)參數(shù)大于等于整數(shù)位數(shù)時(shí)返回科學(xué)計(jì)數(shù)法表示
x.toPrecision(2);       // 返回 9.7
x.toPrecision(4);       // 返回 9.656
x.toPrecision(6);       // 返回 9.65600

(6)轉(zhuǎn)換數(shù)字

Number(true)//返回1
Number(false)//返回0
Number(new Date())//返回時(shí)間的getTime()值,即1970年到現(xiàn)在的毫秒數(shù)
Number("10");Number("  10");Number("10  ");//返回10
Number("10 20")//返回NaN
Number(1.23e3);Number(1.23e+3);Number("1.23e3");Number("1.23e+3");//都返回1230
Number("2018 year")//返回NaN
Number("10,33")//返回NaN

parseInt(true);parseInt(false);parseInt(new Date());//返回NaN
parseInt("10");parseInt("  10");parseInt("10  ");//返回10
parseInt("10 20")//返回10
parseInt("1.23e+3");parseInt("1.23e3")//返回1
parseInt(1.2345e3);parseInt(1.2345e+3);//返回1234
parseInt("2018 year")//返回2018
parseInt("10,33")//返回10

number.toLocaleString('zh-Hans-CN-u-nu-hanidec') //將阿拉伯?dāng)?shù)字轉(zhuǎn)換為中文
image.png

3、數(shù)組

(1)pop() 從數(shù)組中刪除最后一個(gè)元素并返回“被彈出”的值
(2)push()(在數(shù)組結(jié)尾處)向數(shù)組添加一個(gè)新的元素并返回新數(shù)組的長(zhǎng)度
(3)join()將數(shù)組轉(zhuǎn)換為字符串并規(guī)定分割符
(4)shift() 方法會(huì)刪除首個(gè)數(shù)組元素,并把所有其他元素“位移”到更低的索引并且返回被“位移出”的字符串。
(5)unshift() 方法(在開(kāi)頭)向數(shù)組添加新元素,并“反向位移”舊元素并且返回新數(shù)組的長(zhǎng)度

let arr = ["a","b","c"]
arr.push("d") //返回4 arr = ["a","b","c","d"]
arr.pop() //返回"d" arr = ["a","b","c"]
arr.join("$") // 返回 "a$b$c"
arr.shift() //返回"a" arr=["b","c"]
arr.unshift("z")//返回3 arr=["z","b","c"]

(6)splice()可用于向數(shù)組添加新項(xiàng)(第一個(gè)參數(shù)(0)定義新元素應(yīng)該被添加(接入)的位置;第二個(gè)參數(shù)(1)定義應(yīng)該刪除多個(gè)元素;其余參數(shù)則代表被插入的元素;)
(7)concat()通過(guò)合并(連接)現(xiàn)有數(shù)組來(lái)創(chuàng)建一個(gè)新數(shù)組;concat() 方法不會(huì)更改現(xiàn)有數(shù)組。它總是返回一個(gè)新數(shù)組;可以使用任意數(shù)量的數(shù)組參數(shù);
(8)slice()用數(shù)組的某個(gè)片段切出新數(shù)組(該方法返回一個(gè)新數(shù)組,不會(huì)從源數(shù)組中刪除任何元素。若傳入兩個(gè)數(shù)值參數(shù)該方法會(huì)從開(kāi)始參數(shù)選取元素,直到結(jié)束參數(shù)(不包括)為止)

let arr = [0,1,2,3]
arr.splice(0,1); //arr = [1,2,3] 刪除第一個(gè)元素
arr.splice(1,1,4,5,6)//arr = [1,4,5,6,3]
arr.concat(0,[1,2,3],4,5) //返回[1,4,5,6,3,0,1,2,3,4,5] arr = [1,4,5,6,3]
arr.slice(1) //返回[4,5,6,3] arr還是原來(lái)的值
arr.slice(1,2)//返回[5] 
arr.slice(1,9)//返回[5,6,3]

(9)sort()默認(rèn)按照字母順序?qū)?shù)組進(jìn)行排序(若數(shù)組內(nèi)的對(duì)象不是字符串,則將會(huì)把對(duì)象轉(zhuǎn)換成字符串進(jìn)行排序。sort可接收一個(gè)比值函數(shù)來(lái)進(jìn)行排序,當(dāng) sort() 函數(shù)比較兩個(gè)值時(shí),會(huì)將值發(fā)送到比較函數(shù),并根據(jù)所返回的值(負(fù)、零或正值)對(duì)這些值進(jìn)行排序)
(10)reverse()反轉(zhuǎn)數(shù)組中的元素。并返回其自身

let arr = [6,33,"abc","b"]
arr.sort() //arr = [33,6,"abc","b"]

let points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});  //points = [1,5,10,25,40,100]
points.sort(function(a, b){return 0.5 - Math.random()});  //以隨機(jī)順序排序數(shù)組
Math.max.apply(null, arr) ;//返回?cái)?shù)組中的最大值該函數(shù)的

(11)forEach()為每個(gè)數(shù)組元素調(diào)用一次函數(shù)(回調(diào)函數(shù)),關(guān)于其他迭代方式http://www.lxweimin.com/p/eb97c5aaff87
(12)map()通過(guò)對(duì)每個(gè)數(shù)組元素執(zhí)行函數(shù)來(lái)創(chuàng)建新數(shù)組(不會(huì)對(duì)沒(méi)有值的數(shù)組元素執(zhí)行函數(shù),不會(huì)更改原始數(shù)組)
(13)filter()過(guò)濾出符合條件的元素并返回一個(gè)包含這些元素的新數(shù)組

let arr = [1,2,3,4,5,,7]
let count = 0
console.log(arr.length) //輸出7
arr.forEach(function(value,index,array) {
    count++
    console.log("value = "+value) //依次輸出1-7對(duì)于沒(méi)有值的元素不執(zhí)行打印(谷歌瀏覽器)
})
console.log("count = "+count) //輸出count = 6
count = 0
let arr1 = arr.map(function(value,index,array) {
        count++
    return value*2
})
console.log(arr1) //輸出[2,4,6,8,10,empty,14]     arr依舊為原來(lái)的值
console.log("count = "+count) //輸出count = 6
count = 0
let arr3 = arr.filter(function(value,index,array) {
          count++
          return value > 3
})
console.log(arr3) //[4,5,7]
console.log("count = "+count)//輸出count = 6

(14)reduce()在每個(gè)數(shù)組元素上運(yùn)行函數(shù),以生成(減少它)單個(gè)值
(15)reduceRight()同reduce只是reduceRight的順序?yàn)閺挠业阶?/p>

let count = 0
let arr = [1,2,3,4,5]
let totalNum = arr.reduce(function(total,value,index,array) {
      count++
      console.log("index = "+index + "total = "+total)//total第一次的值為數(shù)組第一個(gè)元素
      return total + value;
})
console.log("count = "+count) //count = 4

(16)every()返回一個(gè)布爾值,代表調(diào)用的數(shù)組中的所有元素是否都滿足條件
(17)some()返回一個(gè)布爾值,代表調(diào)用的數(shù)組中的元素是否至少有一個(gè)滿足條件

let arr = [4,8,10,14]
arr.every(function(value,index,array) {
    value > 9
}) //返回false
arr.some(function(value,index,array) {
    value > 9
}) //返回true

(18)find()方法返回通過(guò)測(cè)試函數(shù)的第一個(gè)數(shù)組元素的值
(19)findIndex() 方法返回通過(guò)測(cè)試函數(shù)的第一個(gè)數(shù)組元素的索引
(20)indexOf()在數(shù)組中搜索元素值并返回其位置(array.indexOf(item, start))
item:必需。要檢索的項(xiàng)目。
start 可選。從哪里開(kāi)始搜索。負(fù)值將從結(jié)尾開(kāi)始的給定位置開(kāi)始,并搜索到結(jié)尾。
如果未找到項(xiàng)目 返回-1
(21)lastIndexOf()與indexOf()相同不過(guò)方向是從后面往前搜索

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容