国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JS中如何輕松遍歷對象屬性的方式總結

2024-05-06 15:36:11
字體:
來源:轉載
供稿:網友

自身可枚舉屬性

Object.keys() 方法會返回一個由一個給定對象的自身可枚舉屬性組成的數組,數組中屬性名的排列順序和使用 for...in 循環遍歷該對象時返回的順序一致 。如果對象的鍵-值都不可枚舉,那么將返回由鍵組成的數組。

這是合理的,因為大多數時候只需要關注對象自身的屬性。

來看看一個對象擁有自身和繼承屬性的例子,Object.keys()只返回自己的屬性鍵:

let simpleColors = { colorA: 'white', colorB: 'black'};let natureColors = { colorC: 'green', colorD: 'yellow'};Object.setPrototypeOf(natureColors, simpleColors);Object.keys(natureColors); // => ['colorC', 'colorD']natureColors['colorA']; // => 'white'natureColors['colorB']; // => 'black'

Object.setPrototypeOf() 方法設置一個指定的對象的原型 ( 即, 內部[[Prototype]]屬性)到另一個對象或 null。

Object.keys(natureColors)返回natureColors對象的自身可枚舉屬性鍵: ['colorC','colorD']

natureColors包含從simpleColors原型對象繼承的屬性,但是Object.keys()函數會跳過它們。

Object.values() Object.entries() 也都是返回一個給定對象自身可枚舉屬性的鍵值對數組

// ...Object.values(natureColors); // => ['green', 'yellow']Object.entries(natureColors);// => [ ['colorC', 'green'], ['colorD', 'yellow'] ]

現在注意與for..in語句的區別,for..in不僅可以循環枚舉自身屬性還可以枚舉原型鏈中的屬性

// ...let enumerableKeys = [];for (let key in natureColors) { enumerableKeys.push(key);}enumerableKeys; // => ['colorC', 'colorD', 'colorA', 'colorB']

enumerableKeys數組包含natureColors自身屬性鍵: 'colorC'和'colorD'。

另外for..in也遍歷了從simpleColors原型對象繼承的屬性

2. Object.values() 返回屬性值

Object.values()方法返回一個給定對象自身的所有可枚舉屬性值的數組,值的順序與使用for...in循環的順序相同 ( 區別在于 for-in 循環枚舉原型鏈中的屬性 )。

來個例子,使用Object.keys()收集keys,然后通過 key 去對象取對應的值:

let meals = { mealA: 'Breakfast', mealB: 'Lunch', mealC: 'Dinner'};for (let key of Object.keys(meals)) { let mealName = meals[key]; // ... do something with mealName console.log(mealName);}// 'Breakfast' 'Lunch' 'Dinner'

meal是一個普通對象。 使用Object.keys(meals)和枚舉的for..of循環獲取對象鍵值。

代碼看起來很簡單,但是,let mealName = meals[key] 沒有多大的必要,可以進一步優化,如下:

let meals = { mealA: 'Breakfast', mealB: 'Lunch', mealC: 'Dinner'};for (let mealName of Object.values(meals)) { console.log(mealName);}// 'Breakfast' 'Lunch' 'Dinner'            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 叙永县| 醴陵市| 漠河县| 梅州市| 延川县| 波密县| 辉县市| 余庆县| 房产| 衢州市| 大名县| 昌黎县| 鄂温| 仁布县| 信阳市| 宾川县| 侯马市| 娄烦县| 申扎县| 饶平县| 平罗县| 贵州省| 蒲城县| 分宜县| 修水县| 烟台市| 鹤庆县| 东乡| 吉水县| 乳山市| 梅州市| 桃园市| 吐鲁番市| 宜黄县| 中卫市| 临汾市| 麦盖提县| 夏河县| 巴里| 曲水县| 吉木萨尔县|