中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JS中遍歷對象的方法有哪些

發布時間:2021-06-22 14:12:18 來源:億速云 閱讀:203 作者:chen 欄目:web開發

本篇內容主要講解“JS中遍歷對象的方法有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“JS中遍歷對象的方法有哪些”吧!

 1 簡介

對象是在編程中最常見的部分,很多情況下需要遍歷該對象上的屬性,那么有幾種方式可以幫助我們遍歷該對象上的屬性呢?下面一起來了解九種方法。

下面測試方法所用的對象如下所示:

const parentObj = {     a: 'aaaaa',     b: Symbol('bbbbb'),     c: 'ccccc' };  const Obj = Object.create(parentObj, {     d: {         value: 'ddddd',         enumerable: true     },     e: {         value: 'eeeee',         enumerable: false     },     [Symbol('f')]: {         value: 'fffff',         enumerable: true     } });

Object.keys(obj)

Object.keys  返回一個所有元素為字符串的數組,其元素來自于從給定的object上面可直接枚舉的屬性(不含Symbol屬性)。這些屬性的順序與手動遍歷該對象屬性時的一致。

console.log('Object.keys()', Object.keys(Obj)); // Object.keys() [ 'd' ]

Object.values(obj)

Object.values()返回一個數組,其元素是在對象上找到的可枚舉屬性值。屬性的順序與通過手動循環對象的屬性值所給出的順序相同。

console.log('Object.values()', Object.values(Obj)); // Object.values() [ 'ddddd' ]

Object.entries(obj)

Object.entries()返回一個數組,其元素是與直接在object上找到的可枚舉屬性鍵值對相對應的數組。屬性的順序與通過手動循環對象的屬性值所給出的順序相同。

console.log('Object.entries()', Object.entries(Obj)); // Object.entries() [ [ 'd', 'ddddd' ] ]

Object.getOwnPropertyNames(obj)

Object.getOwnPropertyNames()方法返回一個由指定對象的所有自身屬性的屬性名(包括不可枚舉屬性但不包括Symbol值作為名稱的屬性)組成的數組。

console.log('Object.getOwnPropertyNames()', Object.getOwnPropertyNames(Obj)); // Object.getOwnPropertyNames() [ 'd', 'e' ]

Object.getOwnPropertySymbols(obj)

Object.getOwnPropertySymbols() 方法返回一個給定對象自身的所有 Symbol 屬性的數組。

console.log('Object.getOwnPropertySymbols()', Object.getOwnPropertySymbols(Obj)); // Object.getOwnPropertySymbols() [ Symbol(f) ]

for……in

遍歷所有可枚舉的屬性(包括原型上的),然后可利用hasOwnProperty判斷對象是否包含特定的自身(非繼承)屬性,其具有以下特點:

(1)index索引為字符串型數字,不能直接進行幾何運算

(2)遍歷順序有可能不是按照實際數組的內部順序

(3)會遍歷數組的所有可枚舉屬性,包括原型

(4)for...in更適合便利對象,不要使用for...in遍歷數組

for(let key in Obj) {     // for in: d     // for in: a     // for in: b     // for in: c     console.log('for in:', key); }

for……of

必須部署了Iterator接口后才能使用。使用范圍:數組、Set和Map結構、類數組對象(arguments、DOMNodeList對象……)、Generator對象以及字符串

for(let value of Object.values(Obj)) {     // for of: ddddd     console.log('for of:', value); }

forEach

使用break不能中斷循環使用

Object.values(Obj).forEach(value => {     // forEach: ddddd     console.log('forEach:', value); });

Reflect.ownKeys(obj)

返回一個數組,包含對象自身的所有屬性,不管屬性名是Symbol還是字符串,也不管是否可枚舉。

console.log('Reflect.ownKeys()', Reflect.ownKeys(Obj)); // Reflect.ownKeys() [ 'd', 'e', Symbol(f) ]

2 特點總結

類型特點
Object.keys(obj)返回對象本身可直接枚舉的屬性(不含Symbol屬性)
Object.values(obj)返回對象本身可直接枚舉的屬性值(不含Symbol屬性)
Object.entries(obj)返回對象本身可枚舉屬性鍵值對相對應的數組(不含Symbol屬性)
Object.getOwnPropertyNames(obj)返回對象所有自身屬性的屬性名(不包括Symbol值作為名稱的屬性)
Object.getOwnPropertySymbols(obj)返回一個給定對象自身的所有 Symbol 屬性的數組
for……in所有可枚舉的屬性(包括原型上的)
for……of必須部署了Iterator接口后才能使用,例如數組、Set和Map結構、類數組對象、Generator對象以及字符串
forEachbreak不能中斷循環
Reflect.ownKeys(obj)對象自身所有屬性

3 遍歷順序

上述遍歷對象的屬性時都遵循同樣的屬性遍歷次序規則:

  • 首先遍歷所有屬性名為數值的屬性,按照數字排序

  • 其次遍歷所有屬性名為字符串的屬性,按照生成時間排序

  • 最后遍歷所有屬性名為Symbol值的屬性,按照生成時間排序

用下面代碼來驗證上述遍歷規則

const Obj = {     [Symbol(0)]: 'symbol',     1 : '1',     'c': 'c',     '1a1': '11',     22223333: '2',     'd': 'd' };  console.log(Reflect.ownKeys(Obj)); // [ '1', '22223333', 'c', '1a1', 'd', Symbol(0) ]

到此,相信大家對“JS中遍歷對象的方法有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

巴青县| 文登市| 绥芬河市| 沈丘县| 黎川县| 黎城县| 阜平县| 岗巴县| 文登市| 镇宁| 海阳市| 渭源县| 青阳县| 长寿区| 黔西| 灵寿县| 祁门县| 霞浦县| 开封市| 普格县| 察雅县| 榆林市| 拜城县| 西宁市| 额敏县| 罗江县| 郯城县| 敖汉旗| 乌兰县| 化州市| 土默特右旗| 赫章县| 开封市| 漾濞| 缙云县| 灯塔市| 八宿县| 星子县| 桑日县| 宁武县| 台江县|