1. 字符串的扩展方法
1.1 includes()
const str = 'Hello World' ;
console. log ( str. includes ( 'Hello' ) ) ;
console. log ( str. includes ( 'hello' ) ) ;
console. log ( str. includes ( 'World' , 6 ) ) ;
function validateEmail ( email ) {
return email. includes ( '@' ) && email. includes ( '.' ) ;
}
1.2 startsWith()
const url = 'https://example.com' ;
console. log ( url. startsWith ( 'https' ) ) ;
console. log ( url. startsWith ( 'http' ) ) ;
console. log ( url. startsWith ( 'example' , 8 ) ) ;
function isSecureUrl ( url ) {
return url. startsWith ( 'https://' ) ;
}
1.3 endsWith()
const filename = 'document.pdf' ;
console. log ( filename. endsWith ( '.pdf' ) ) ;
console. log ( filename. endsWith ( '.doc' ) ) ;
console. log ( filename. endsWith ( 'ment' , 8 ) ) ;
function isImageFile ( filename ) {
return filename. endsWith ( '.jpg' ) || filename. endsWith ( '.png' ) ;
}
1.4 repeat()
const star = '*' ;
console. log ( star. repeat ( 5 ) ) ;
function createIndent ( level ) {
return ' ' . repeat ( level * 2 ) ;
}
function createProgressBar ( progress ) {
const filled = '█' . repeat ( progress) ;
const empty = '░' . repeat ( 10 - progress) ;
return filled + empty;
}
console. log ( createProgressBar ( 3 ) ) ;
2. 数值的扩展
2.1 进制表示法
const binary = 0b1010 ;
console. log ( binary) ;
const octal = 0o744 ;
console. log ( octal) ;
const permission = 0b111 ;
const canRead = ( permission & 0b100 ) === 0b100 ;
const canWrite = ( permission & 0b010 ) === 0b010 ;
const canExecute = ( permission & 0b001 ) === 0b001 ;
2.2 Number 新增方法
2.2.1 Number.isFinite()
console. log ( Number. isFinite ( 1 ) ) ;
console. log ( Number. isFinite ( Infinity ) ) ;
console. log ( Number. isFinite ( - Infinity ) ) ;
console. log ( Number. isFinite ( NaN ) ) ;
console. log ( Number. isFinite ( '15' ) ) ;
function validateInput ( value ) {
return Number. isFinite ( value) ? value : 0 ;
}
2.2.2 Number.isNaN()
console. log ( Number. isNaN ( NaN ) ) ;
console. log ( Number. isNaN ( 1 ) ) ;
console. log ( Number. isNaN ( 'NaN' ) ) ;
function safeCalculation ( x, y ) {
const result = x / y;
return Number. isNaN ( result) ? 0 : result;
}
2.2.3 Number.isInteger()
console. log ( Number. isInteger ( 1 ) ) ;
console. log ( Number. isInteger ( 1.0 ) ) ;
console. log ( Number. isInteger ( 1.1 ) ) ;
function validateAge ( age ) {
return Number. isInteger ( age) && age >= 0 ;
}
2.2.4 Number.EPSILON
console. log ( Number. EPSILON ) ;
function nearlyEqual ( a, b ) {
return Math. abs ( a - b) < Number. EPSILON ;
}
console. log ( nearlyEqual ( 0.1 + 0.2 , 0.3 ) ) ;
2.3 Math 新增方法
2.3.1 Math.trunc() 去除小数部分,不管大小直接抹掉小数部分
console. log ( Math. trunc ( 4.9 ) ) ;
console. log ( Math. trunc ( - 4.1 ) ) ;
console. log ( Math. trunc ( - 0.1234 ) ) ;
function getHours ( hours ) {
return Math. trunc ( hours) ;
}
2.3.2 Math.sign()
console. log ( Math. sign ( 5 ) ) ;
console. log ( Math. sign ( - 5 ) ) ;
console. log ( Math. sign ( 0 ) ) ;
console. log ( Math. sign ( - 0 ) ) ;
console. log ( Math. sign ( NaN ) ) ;
function getTemperatureStatus ( temp ) {
switch ( Math. sign ( temp) ) {
case 1 : return '温度高于零度' ;
case - 1 : return '温度低于零度' ;
case 0 : return '温度为零度' ;
default : return '无效温度' ;
}
}
3. 数组的扩展
3.1 扩展运算符
const original = [ 1 , 2 , 3 ] ;
const copy = [ ... original] ;
console. log ( copy) ;
const arr1 = [ 1 , 2 ] ;
const arr2 = [ 3 , 4 ] ;
const combined = [ ... arr1, ... arr2] ;
console. log ( combined) ;
const [ first, ... rest] = [ 1 , 2 , 3 , 4 ] ;
console. log ( first) ;
console. log ( rest) ;
function sum ( ... numbers) {
return numbers. reduce ( ( total, num ) => total + num, 0 ) ;
}
console. log ( sum ( 1 , 2 , 3 ) ) ;
3.2 Array.from()
const arrayLike = { 0 : 'a' , 1 : 'b' , 2 : 'c' , length : 3 } ;
const array = Array. from ( arrayLike) ;
console. log ( array) ;
const set = new Set ( [ 1 , 2 , 3 ] ) ;
const arrayFromSet = Array. from ( set) ;
console. log ( arrayFromSet) ;
const mapped = Array. from ( [ 1 , 2 , 3 ] , x => x * 2 ) ;
console. log ( mapped) ;
const links = Array. from ( document. querySelectorAll ( 'a' ) ) ;
const urls = links. map ( link => link. href) ;
3.3 Array.of()
console. log ( Array. of ( 1 ) ) ;
console. log ( Array. of ( 1 , 2 , 3 ) ) ;
console. log ( Array. of ( undefined ) ) ;
console. log ( new Array ( 3 ) ) ;
console. log ( Array. of ( 3 ) ) ;
function createMatrix ( rows, cols, value ) {
return Array. from ( { length : rows } , ( ) => Array. of ( ... Array ( cols) . fill ( value) ) ) ;
}
console. log ( createMatrix ( 2 , 2 , 0 ) ) ;
3.4 查找方法
3.4.1 find() 和 findIndex()
const numbers = [ 1 , 2 , 3 , 4 , 5 ] ;
const found = numbers. find ( num => num > 3 ) ;
console. log ( found) ;
const foundIndex = numbers. findIndex ( num => num > 3 ) ;
console. log ( foundIndex) ;
const users = [
{ id : 1 , name : 'John' } ,
{ id : 2 , name : 'Jane' }
] ;
const user = users. find ( user => user. id === 2 ) ;
console. log ( user) ;
3.4.2 findLast() 和 findLastIndex() 扁平化数组
const numbers = [ 1 , 2 , 3 , 4 , 5 , 4 , 3 , 2 , 1 ] ;
const lastFound = numbers. findLast ( num => num > 3 ) ;
console. log ( lastFound) ;
const lastFoundIndex = numbers. findLastIndex ( num => num > 3 ) ;
console. log ( lastFoundIndex) ;
const transactions = [
{ id : 1 , amount : 100 } ,
{ id : 2 , amount : 200 } ,
{ id : 3 , amount : 300 }
] ;
const lastLargeTransaction = transactions. findLast ( t => t. amount > 150 ) ;
console. log ( lastLargeTransaction) ;
3.5 fill()
const array = new Array ( 3 ) . fill ( 0 ) ;
console. log ( array) ;
const numbers = [ 1 , 2 , 3 , 4 , 5 ] ;
numbers. fill ( 0 , 2 , 4 ) ;
console. log ( numbers) ;
function createMatrix ( rows, cols ) {
return Array ( rows) . fill ( ) . map ( ( ) => Array ( cols) . fill ( 0 ) ) ;
}
console. log ( createMatrix ( 2 , 3 ) ) ;
3.6 flat() 和 flatMap()
const nested = [ 1 , [ 2 , 3 ] , [ 4 , [ 5 , 6 ] ] ] ;
console. log ( nested. flat ( ) ) ;
console. log ( nested. flat ( 2 ) ) ;
const sentences = [ 'Hello world' , 'Good morning' ] ;
const words = sentences. flatMap ( s => s. split ( ' ' ) ) ;
console. log ( words) ;
const orders = [
{ products : [ 'apple' , 'banana' ] } ,
{ products : [ 'orange' ] }
] ;
const allProducts = orders. flatMap ( order => order. products) ;
console. log ( allProducts) ;