Javascript物件如何循環遍歷?以下這篇文章給大家詳細介紹5種JS物件遍歷方法,並淺顯對比一下這5種方法,希望對大家有幫助!
一、物件的遍歷方法
.getOwnPropertyNames()
屬性名稱為 字串 ,依照
產生時間升序排序
屬性名稱為
Symbol,依照
產生時間
升序排序
#for…in 主要用於循環物件屬性。循環中的程式碼每執行一次,就會對物件的屬性進行一次操作。其語法如下:
for (var in object) {
执行的代码块
} 登入後複製
其中兩個參數:
Object.keys():傳回包含物件鍵名的陣列;
Object.values():傳回包含物件鍵值的陣列;
Object.entries():傳回包含物件鍵名和鍵值的陣列。
let obj = {
id: 1,
name: 'hello',
age: 18
};
console.log(Object.keys(obj)); // 输出结果: ['id', 'name', 'age']
console.log(Object.values(obj)); // 输出结果: [1, 'hello', 18]
console.log(Object.entries(obj)); // 输出结果: [['id', 1], ['name', 'hello'], ['age', 18] 登入後複製
注意 Object.keys()方法傳回的陣列中的值都是字串,也就是說不是字串的key值會轉換為字串。
結果陣列中的屬性值都是物件本身
可列舉的屬性,不包含繼承來的屬性。
3. Object.getOwnPropertyNames()
#Object.getOwnPropertyNames()
方法與
Object.keys()類似,也是接受一個物件作為參數,傳回一個數組,包含了該物件本身的所有屬性名稱。但它能傳回不可枚舉的屬性。
let a = ['Hello', 'World'];
Object.keys(a) // ["0", "1"]
Object.getOwnPropertyNames(a) // ["0", "1", "length"] 登入後複製
這兩個方法都可以用來計算物件中屬性的數量:
var obj = { 0: "a", 1: "b", 2: "c"};
Object.getOwnPropertyNames(obj) // ["0", "1", "2"]
Object.keys(obj).length // 3
Object.getOwnPropertyNames(obj).length // 3 登入後複製
4. Object.getOwnPropertySymbols() Object.getOwnPropertySymbols() 方法傳回物件本身的Symbol 屬性所組成的陣列,不包含字串屬性:let obj = {a: 1}
// 给对象添加一个不可枚举的 Symbol 属性
Object.defineProperties(obj, {
[Symbol('baz')]: {
value: 'Symbol baz',
enumerable: false
}
})
// 给对象添加一个可枚举的 Symbol 属性
obj[Symbol('foo')] = 'Symbol foo'
Object.getOwnPropertySymbols(obj).forEach((key) => {
console.log(obj[key])
})
// 输出结果:Symbol baz Symbol foo 登入後複製
#5 . Reflect.ownKeys() Reflect.ownKeys() 傳回一個數組,包含物件本身的所有屬性。它和Object.keys()類似,Object.keys()傳回屬性key,但不包含不可列舉的屬性,而Reflect.ownKeys()會傳回所有屬性key: var obj = {
a: 1,
b: 2
}
Object.defineProperty(obj, 'method', {
value: function () {
alert("Non enumerable property")
},
enumerable: false
})
console.log(Object.keys(obj))
// ["a", "b"]
console.log(Reflect.ownKeys(obj))
// ["a", "b", "method"] 登入後複製
注意:
Object.keys() :相當於傳回物件屬性陣列;
#Reflect.ownKeys() :相當於Object.getOwnPropertyNames( obj).concat(Object.getOwnPropertySymbols(obj)。
四、遍歷方法對比
遍歷方法 自身屬性 繼承屬性
遍歷基本屬性 會遍歷原型鏈
########################################## Symbol類型##################for ... in######自身#####繼承######是########################### ##是######否######不包含############Object.keys()######自己######### #######是######否######否######不包含############Object.getOwnPropertyNames()### ###自身###############是######否#######是#######不包含######### ####Object.getOwnPropertySymbols()######自身###############否######否######是###################################################### ##所有Symbol屬性############Reflect.ownKeys()#######自身###############是##### #否######是######包含################【相關推薦:###javascript學習教學######】## ####以上是詳解Javascript物件的5種循環遍歷方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
WebSocket與JavaScript:實現即時監控系統的關鍵技術
Dec 17, 2023 pm 05:30 PM
WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技
JavaScript與WebSocket:打造高效率的即時天氣預報系統
Dec 17, 2023 pm 05:13 PM
JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We
如何將 MySQL 查詢結果陣列轉換為物件?
Apr 29, 2024 pm 01:09 PM
將MySQL查詢結果陣列轉換為物件的方法如下:建立一個空物件陣列。循環結果數組並為每一行建立一個新的物件。使用foreach迴圈將每一行的鍵值對賦給新物件的對應屬性。將新物件加入到物件數組中。關閉資料庫連線。
簡易JavaScript教學:取得HTTP狀態碼的方法
Jan 05, 2024 pm 06:08 PM
JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest
PHP 函數如何傳回物件?
Apr 10, 2024 pm 03:18 PM
PHP函數可以透過使用return語句後接物件實例來傳回對象,從而將資料封裝到自訂結構中。語法:functionget_object():object{}。這允許創建具有自訂屬性和方法的對象,並以對象的形式處理資料。
如何在JavaScript中取得HTTP狀態碼的簡單方法
Jan 05, 2024 pm 01:37 PM
JavaScript中的HTTP狀態碼取得方法簡介:在進行前端開發中,我們常常需要處理與後端介面的交互,而HTTP狀態碼就是其中非常重要的一部分。了解並取得HTTP狀態碼有助於我們更好地處理介面傳回的資料。本文將介紹使用JavaScript取得HTTP狀態碼的方法,並提供具體程式碼範例。一、什麼是HTTP狀態碼HTTP狀態碼是指當瀏覽器向伺服器發起請求時,服務
C++ 函式回傳物件時有什麼需要注意的?
Apr 19, 2024 pm 12:15 PM
在C++中,函數傳回物件需要注意三點:物件的生命週期由呼叫者負責管理,以防止記憶體洩漏。避免懸垂指針,透過動態分配記憶體或返回物件本身來確保物件在函數返回後仍然有效。編譯器可能會最佳化傳回物件的副本生成,以提高效能,但如果物件是值語義傳遞的,則無需副本生成。
數組和物件在 PHP 中的差異是什麼?
Apr 29, 2024 pm 02:39 PM
PHP中,數組是有序序列,以索引存取元素;物件是具有屬性和方法的實體,透過new關鍵字建立。數組存取透過索引,物件存取通過屬性/方法。數組值傳遞,物件參考傳遞。
See all articles