Object
在JavaScript中,Object
?類型是一種復雜的數據類型,用于存儲鍵值對集合。它提供了多種方法來操作這些鍵值對,以及執行其他常見的操作。這里,我列出了一些?Object
?類型的常見方法或特性,它們在日常編程中非常有用:
- 屬性訪問
- 點符號(
.
):如果屬性名是一個有效的標識符(例如,沒有空格、不是以數字開頭等),你可以使用點符號來訪問屬性。obj.propertyName
。 - 方括號(
[]
):如果屬性名不是有效的標識符(比如包含空格或特殊字符),或者你想動態地訪問屬性,你可以使用方括號。obj['propertyName']
?或?obj[variableName]
。
- 點符號(
-
Object.keys()
- 返回一個由給定對象的自身屬性的鍵組成的數組,數組中屬性鍵的排列順序和使用?
for...in
?循環遍歷該對象時返回的順序一致(兩者的主要區別是?for...in
?循環還會枚舉其原型鏈上的屬性)。
- 返回一個由給定對象的自身屬性的鍵組成的數組,數組中屬性鍵的排列順序和使用?
- Object.values()
- 返回一個由給定對象自身的所有可枚舉屬性值的數組,其排列與使用?
for...in
?循環遍歷該對象時返回的順序一致(但只包含對象自身的屬性)。
- 返回一個由給定對象自身的所有可枚舉屬性值的數組,其排列與使用?
- Object.entries()
- 返回一個給定對象自身可枚舉屬性的鍵值對數組,其排列與使用?
for...in
?循環遍歷該對象時返回的順序一致(同樣只考慮對象自身的屬性)。
- 返回一個給定對象自身可枚舉屬性的鍵值對數組,其排列與使用?
-
Object.assign()
- 用于將所有可枚舉屬性的值從一個或多個源對象復制到目標對象。它將返回目標對象。注意,它只復制自有屬性,不會復制繼承的或不可枚舉的屬性。
-
Object.create()
- 創建一個新對象,使用現有的對象來提供新創建的對象的?
__proto__
(即原型)。
- 創建一個新對象,使用現有的對象來提供新創建的對象的?
- Object.getPrototypeOf()
- 返回指定對象的原型(即內部?
[[Prototype]]
?屬性的值)。
- 返回指定對象的原型(即內部?
- Object.hasOwnProperty()
- 用來判斷一個對象是否有某個屬性,不管該屬性是自身的還是繼承的。它只判斷屬性是否存在于對象本身,不判斷其是否存在于原型鏈中。
-
Object.is()
- 判斷兩個值是否嚴格相等。它與嚴格相等運算符(
===
)的區別在于處理?NaN
?和?+0
?與?-0
?的方式不同。
- 判斷兩個值是否嚴格相等。它與嚴格相等運算符(
- Object.freeze()
- 凍結一個對象。一個被凍結的對象不能被修改;即不能向這個對象添加新的屬性,不能刪除已有屬性,不能修改該對象已有屬性的值,不能修改該對象已有屬性的可枚舉性、可配置性、可寫性,以及不能修改該對象原型的指向。返回凍結后的對象。
-
Object.defineProperty()
- 在一個對象上定義一個新屬性,或者修改一個對象的現有屬性,并返回這個對象。這個方法允許精確添加或修改對象的屬性。
- Object.getOwnPropertyDescriptor()
- 返回指定對象上一個自有屬性對應的屬性描述符。(自有屬性指的是直接附加在對象上的屬性,而不是繼承自其原型的屬性)。
這些是?Object
?類型的一些基本且常用的方法或特性,它們在處理JavaScript對象時非常有用。
?Array
在JavaScript中,Array
?類型提供了許多內置的方法來操作數組,包括添加、刪除、遍歷、搜索、排序等。以下是一些常見的?Array
?方法:
- push()
- 向數組的末尾添加一個或多個元素,并返回新的數組長度。
- pop()
- 刪除并返回數組的最后一個元素。
- shift()
- 刪除并返回數組的第一個元素。
- unshift()
- 在數組的開頭添加一個或多個元素,并返回新的數組長度。
- concat()
- 用于合并兩個或多個數組。此方法不會改變現有的數組,而是返回一個新數組。
- slice()
- 返回一個淺拷貝的新數組對象,這個對象是一個由?
begin
?到?end
(不包括?end
)選擇的數組的一部分淺拷貝。原始數組不會被修改。
- 返回一個淺拷貝的新數組對象,這個對象是一個由?
-
splice()
- 通過刪除現有元素和/或添加新元素來更改一個數組的內容。這個方法會改變原數組。
- join()
- 把數組的所有元素放入一個字符串。元素通過指定的分隔符進行分隔。
- sort()
- 對數組的元素進行排序,并返回數組。排序不一定是穩定的。默認排序順序是在將元素轉換為字符串,然后比較它們的UTF-16代碼單元值序列時構建的。
- reverse()
- 顛倒數組中元素的順序。
- indexOf()
- 返回在數組中可以找到一個給定元素的第一個索引,如果不存在,則返回-1。
- lastIndexOf()
- 返回指定值在數組中的最后一個索引,如果不存在則返回-1。從數組的后面向前查找。
-
forEach()
- 對數組的每個元素執行一次提供的函數。
-
map()
- 創建一個新數組,其結果是該數組中的每個元素是調用一次提供的函數后的返回值。
-
filter()
- 創建一個新數組, 其包含通過所提供函數實現的測試的所有元素。
- reduce()
- 對數組中的每個元素執行一個由您提供的reducer函數(升序執行),將其結果匯總為單個返回值。
- reduceRight()
- 它的工作原理類似于?
reduce()
,不同的是它是從數組的末尾開始向前遍歷。
- 它的工作原理類似于?
- find()
- 返回數組中滿足提供的測試函數的第一個元素的值。否則返回?
undefined
。
- 返回數組中滿足提供的測試函數的第一個元素的值。否則返回?
- findIndex()
- 返回數組中滿足提供的測試函數的第一個元素的索引。否則返回-1。
- flat()
- 按照一個可指定的深度遞歸遍歷數組,并將所有元素與遍歷到的子數組中的元素合并為一個新數組返回。
- flatMap()
- 首先使用映射函數映射每個元素,然后將結果壓縮成一個新數組。它與?
map
?和?flat
?方法的結合非常相似,但?flatMap
?通常在性能上更優。
- 首先使用映射函數映射每個元素,然后將結果壓縮成一個新數組。它與?
String?
在JavaScript中,String
?類型提供了許多內置的方法來操作字符串,這些方法可以用于字符串的查找、替換、截取、轉換等操作。以下是一些常見的?String
?方法:
- length
- 屬性,用于獲取字符串的長度。
- charAt(index)
- 方法,返回在指定位置的字符。索引(index)從0開始計算。
- charCodeAt(index)
- 方法,返回在指定的位置的字符的Unicode編碼。索引(index)從0開始計算。
-
concat(...strings)
- 方法,用于連接兩個或多個字符串,并返回連接后的新字符串。
- fromCharCode(...codes)
- 靜態方法,接受一個或多個Unicode編碼值,然后返回一個字符串。注意,這是
String
對象的一個靜態方法,因此應該通過String.fromCharCode()
來調用。
- 靜態方法,接受一個或多個Unicode編碼值,然后返回一個字符串。注意,這是
- indexOf(searchValue, fromIndex)
- 方法,返回指定值在字符串中首次出現的位置索引。如果未找到,則返回-1。
fromIndex
是可選的,表示開始搜索的位置。
- 方法,返回指定值在字符串中首次出現的位置索引。如果未找到,則返回-1。
- lastIndexOf(searchValue, fromIndex)
- 方法,返回指定值在字符串中最后一次出現的位置索引,從字符串的末尾向前搜索。
fromIndex
是可選的,表示開始搜索的位置。
- 方法,返回指定值在字符串中最后一次出現的位置索引,從字符串的末尾向前搜索。
-
match(regexp)
- 方法,在字符串內檢索與正則表達式相匹配的結果。如果沒有找到匹配項,則返回
null
。
- 方法,在字符串內檢索與正則表達式相匹配的結果。如果沒有找到匹配項,則返回
-
replace(searchValue/regexp, replaceValue)
- 方法,在字符串中查找匹配的子串或正則表達式,并用新的子串替換它們。默認情況下,只替換第一個匹配項。如果
replaceValue
是一個函數,則對每個匹配項執行該函數,其返回值將用作替換文本。
- 方法,在字符串中查找匹配的子串或正則表達式,并用新的子串替換它們。默認情況下,只替換第一個匹配項。如果
- search(regexp)
- 方法,檢索與正則表達式相匹配的值。返回第一個匹配項的索引;如果沒有找到匹配項,則返回-1。注意,
search()
方法不執行全局匹配,它總是從字符串的開始進行檢索。
- 方法,檢索與正則表達式相匹配的值。返回第一個匹配項的索引;如果沒有找到匹配項,則返回-1。注意,
-
slice(start, end)
- 方法,提取字符串的一部分,并返回一個新字符串(被提取的部分)。
start
是開始提取的位置(包含),end
是結束提取的位置(不包含)。如果省略end
,則提取到字符串的末尾。
- 方法,提取字符串的一部分,并返回一個新字符串(被提取的部分)。
-
split(separator, limit)
- 方法,通過分隔符將字符串分割成子字符串數組。
separator
是分隔符,limit
是可選的,用于限制返回數組的長度。
- 方法,通過分隔符將字符串分割成子字符串數組。
- substr(start, length)
- 方法(注意:在較新的JavaScript版本中可能不推薦使用),從字符串中提取從
start
位置開始的指定數量的字符。如果省略length
,則提取到字符串的末尾。
- 方法(注意:在較新的JavaScript版本中可能不推薦使用),從字符串中提取從
- substring(start, end)
- 方法,提取字符串中介于兩個指定下標之間的字符。返回的新字符串包括
start
處的字符,但不包括end
處的字符。如果省略end
,則提取到字符串的末尾。
- 方法,提取字符串中介于兩個指定下標之間的字符。返回的新字符串包括
- toLowerCase()
- 方法,將字符串中的所有大寫字符轉換為小寫字符,并返回新的字符串。
- toUpperCase()
- 方法,將字符串中的所有小寫字符轉換為大寫字符,并返回新的字符串。
- trim()
- 方法,從字符串的兩端刪除空白字符。空白字符包括空格、制表符、換行符等。
trim()
方法不會改變原始字符串,而是返回一個新的字符串。
- 方法,從字符串的兩端刪除空白字符。空白字符包括空格、制表符、換行符等。
- includes(searchString, position)
- 方法,判斷字符串是否包含指定的子字符串,根據情況可指定開始搜索的位置。返回布爾值。
- startsWith(searchString, position)
- 方法,判斷字符串是否以指定的子字符串開頭,根據情況可指定開始搜索的位置。返回布爾值。
- endsWith(searchString, position)
- 方法,判斷字符串是否以指定的子字符串結尾,根據情況可指定開始搜索的位置(但
endsWith
方法中的position
參數實際上是限定在position
之前的字符中搜索,而不包括position
本身的字符)。返回布爾值。
- 方法,判斷字符串是否以指定的子字符串結尾,根據情況可指定開始搜索的位置(但
- replaceAll(searchValue, replaceValue)
- 方法(ES2021引入),在字符串中查找所有匹配的子串,并替換它們。與
replace()
方法不同,replaceAll()
會替換所有匹配項,而不僅僅是第一個。
- 方法(ES2021引入),在字符串中查找所有匹配的子串,并替換它們。與
以上是一些JavaScript中String
類型的常見方法,它們在處理字符串時非常有用。
?