字符串的扩展
字符串的擴(kuò)展
1.字符的 Unicode 表示法
rest參數(shù)與數(shù)組
function log(...value) {console.log(value);console.log(...value); }log([1,2,3]); // [ [ 1, 2, 3 ] ] // [ 1, 2, 3 ] log(1,2,3); // [ 1, 2, 3 ] // 1 2 32.字符串的遍歷
使用for...of循環(huán)遍歷
for(let item of 'foo'){ console.log(item); //'f' 'o' 'o' }3.includes(),startsWith(),endsWith()
傳統(tǒng)的字符串只有indexOf方法,可以用來確定一個字符串是否包含在另一個字符串中。ES6又提供了三種新方法。
- includes():返回布爾值,表示是否找到了參數(shù)字符串。- StartsWith():返回布爾值,表示參數(shù)字符串是否在原字符串的頭部。- endsWith():返回布爾值,表示參數(shù)字符串是否在原字符串的尾部。 let s = 'Hello world!' s.startsWith("Hello") //true s.endsWith('!') //true s.includes('o') //true這三種方法都支持第二個參數(shù),表示開始搜索的位置。
let s = 'Hello world!'; s.startsWith('world',6)//true s.endsWith('Hello',5)//true 前5個字符串 s.includes('Hello',6)//false //上面代碼表示,使用第二個參數(shù)n時,**endsWith的行為與其他兩個方法有所不同。它針對前n個字符,**而其他兩個方法針對從第n個位置直到字符串結(jié)束。4.repeat()
repeat返回一個新字符串,表示將原字符串重復(fù)n次。
'x'.repeat(3)//'xxx' 'hello'.repeat(2)//'hellohello' 'na'.rapeat(0) //''如果參數(shù)是小數(shù),則會取整。
'na'.repeat(2.9) //'nana'如果參數(shù)是負(fù)數(shù)或者是Infinity,會報錯
'na'.repeat(Infinity) //RangError 'na'.repeat(-1)//RangError如果參數(shù)在0到-1之間則視為為0
'na'.repeat(-0.9) //'' //參數(shù)NaN等同于0 'na'.repeat(NaN)//'' //如果參數(shù)是字符串則會先轉(zhuǎn)換成數(shù)字 'na'.repeat('na') //'' 'na'.rapeat('3')//'nanana'5.padStart(),padEnd()
字符串補(bǔ)全的功能
padStart()用于頭部補(bǔ)全,padEnd()用于尾部補(bǔ)全。
如果原字符串的長度,等于或大于最大長度,則字符串補(bǔ)全不生效,返回原字符串。
'xxx'.padStart(2,'ab') //'xxx' 返回原字符串 'xxx'.padEnd(2,'ab') //'xxx' 返回原字符串如果補(bǔ)全的字符串和原字符串,兩者的長度超出了最大長度,則截取超出位數(shù)的補(bǔ)全字符串
'abc'.padStart(10,'0123456789') //"0123456abc"如果省略第二個參數(shù),默認(rèn)使用空格補(bǔ)全長度。 'x'.padStart(4) //' x' 'x'.padEnd(4) //'x 'padStart()的常見用途是為數(shù)值補(bǔ)全指定位數(shù)。下面代碼生成 10 位的數(shù)值字符串。
'1'.padStart(10, '0') // "0000000001" '12'.padStart(10, '0') // "0000000012" '123456'.padStart(10, '0') // "0000123456"另一個用途是提示字符串格式。
'12'.padStart(10,'YYYY-MM-DD') //'YYYY-MM-12' '09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"6.字符串嵌入變量
// 字符串中嵌入變量 let name = "Bob", time = "today"; `Hello ${name}, how are you ${time}?`大括號內(nèi)部可以放入任意的 JavaScript 表達(dá)式,可以進(jìn)行運算,以及引用對象屬性。
let x = 1; let y = 2;`${x} + ${y} = ${x + y}` // "1 + 2 = 3"`${x} + ${y * 2} = ${x + y * 2}` // "1 + 4 = 5"let obj = {x: 1, y: 2}; `${obj.x + obj.y}` // "3"模板字符串之中還能調(diào)用函數(shù)。
function fn() {return "Hello World"; }`foo ${fn()} bar` // foo Hello World bar 如果模板字符串中的變量沒有聲明,將報錯。 // 變量place沒有聲明 let msg = `Hello, ${place}`; // 報錯//由于模板字符串的大括號內(nèi)部,就是執(zhí)行 JavaScript 代碼,因此如果大括號內(nèi)部是一個字符串,將會原樣輸出 `Hello ${'World'}` // "Hello World"模板字符串甚至還能嵌套。 const tmpl = addrs => `<table>${addrs.map(addr => `<tr><td>${addr.first}</td></tr><tr><td>${addr.last}</td></tr>`).join('')}</table> `;總結(jié)
- 上一篇: 2019年中国十大人才发展趋势
- 下一篇: Element-ui自定义主题换肤