一、什麼是Object.keys()
Object.keys() 是一個用於返回一個對象自身可枚舉屬性的名稱數組的靜態方法。
const obj = {a: 1, b: 2, c: 3};
console.log(Object.keys(obj)); // ['a', 'b', 'c']
Object.keys() 方法接受一個對象作為參數。在上面的示例中,對象 obj 中包含三個屬性a,b,c。Object.keys(obj)方法輸出了這三個屬性的名稱數組。
二、Object.keys()的作用
Object.keys()通常用於獲取對象中屬性的名稱數組。您可以通過遍歷這個數組獲取對象中所有屬性的值。
const obj = {a: 1, b: 2, c: 3};
const keys = Object.keys(obj);
for(let i = 0; i < keys.length; i++) {
console.log(obj[keys[i]]);
}
在這個示例中,我們遍歷了對象 obj 中的屬性,並使用 obj[keys[i]] 訪問屬性值。
此外,Object.keys() 還有許多其他用途。例如,它可以幫助我們在處理對象時檢查某個屬性是否存在。
const obj = {a: 1, b: 2};
if(Object.keys(obj).includes('a')) {
console.log('對象包含屬性 a');
} else {
console.log('對象不包含屬性 a');
}
這個示例檢查屬性 a 是否存在於對象 obj 中。如果屬性存在,則會輸出「對象包含屬性 a」。
三、Object.keys() 和 for-in 循環
Object.keys() 和 for-in 循環都可以用於遍歷對象。但它們之間有什麼區別呢?
首先,for-in 循環是用於遍歷對象的所有屬性,包括繼承的屬性。相比之下, Object.keys()只返回對象自身的可枚舉屬性。以下是一個 for-in 循環的示例:
const obj = {a: 1, b: 2};
for(let key in obj) {
console.log(key);
}
在這個示例中,for-in 循環輸出了對象 obj 中的屬性 a 和 b。
相反,Object.keys() 方法只返回對象自身的可枚舉屬性的名稱數組。以下是一個 Object.keys() 示例:
const obj = {a: 1, b: 2};
console.log(Object.keys(obj));
在這個示例中,Object.keys() 方法僅返回對象 obj 的自身屬性名稱數組 [‘a’, ‘b’],但不包括對象的原型對象中的任何屬性。
四、Object.keys() 和 Object.getOwnPropertyNames()
Object.getOwnPropertyNames() 是另一個返回對象屬性名稱數組的方法。然而,與 Object.keys() 不同,此方法返回對象自身所有屬性的名稱,而不僅僅是可枚舉屬性的名稱。
以下是一個 Object.getOwnPropertyNames() 的示例:
const obj = {a: 1, b: 2};
console.log(Object.getOwnPropertyNames(obj)); // ['a', 'b']
在這個示例中,Object.getOwnPropertyNames() 方法返回對象 obj 的自身屬性名稱數組[‘a’, ‘b’],包括不可枚舉元素。
五、Object.keys() 和 Object.values() 和 Object.entries()
Object.values() 方法返回對象自身可枚舉屬性的值數組。
const obj = {a: 1, b: 2};
console.log(Object.values(obj)); // [1, 2]
在這個示例中,Object.values() 方法返回對象 obj 的自身可枚舉屬性的值數組 [1, 2]。
Object.entries() 方法返回一個由對象自身的可枚舉屬性鍵值對數組組成的數組。
const obj = {a: 1, b: 2};
console.log(Object.entries(obj)); // [['a', 1], ['b', 2]]
在這個示例中,Object.entries() 方法返回對象 obj 的自身可枚舉屬性鍵值對數組 [ [‘a’, 1], [‘b’, 2]]。
結論
Object.keys() 是一個有用的方法,它可以幫助我們訪問對象中的屬性名稱數組。Object.keys() 與 for-in 循環,Object.getOwnPropertyNames(),Object.values() 和 Object.entries() 這些方法組合使用,可以讓我們更好地處理對象。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/301349.html