一、Object.keys()的基本介紹
Object.keys()方法用於返回一個對象的所有屬性名,返回值為一個數組,該數組包含了對象的所有可枚舉屬性。
該方法的語法如下:
Object.keys(obj)
其中,obj是要返回其屬性名的對象。
二、Object.keys()的常見用法
1、對象屬性迭代
Object.keys()常用於迭代對象的所有屬性名。通過將對象的屬性名存儲在數組中,您可以在不知道對象鍵名的情況下對其進行操作。
const obj = {'name':'Jack','age':18,'gender':'male'};
Object.keys(obj).forEach(function(key) {
console.log(key, obj[key]);
});
// Output: name Jack
// age 18
// gender male
2、判斷對象是否為空
您可以使用Object.keys()來判斷對象是否為空:
const obj = {};
if (Object.keys(obj).length === 0) {
console.log('Object is empty');
}
// Output: Object is empty
3、過濾對象的屬性
您可以使用Object.keys()來過濾對象的某些屬性,並返回一個新的具有過濾屬性的對象:
const obj = {'name':'Jack','age':18,'gender':'male'};
const filteredObj = Object.keys(obj).filter(key => key !== 'age').reduce((obj, key) => {
obj[key] = obj[key];
return obj;
}, {});
console.log(filteredObj);
// Output: {"name": "Jack", "gender": "male"}
三、Object.keys()的注意事項
1、對象原型屬性不會被枚舉
Object.keys()只返回對象本身的可枚舉屬性,而不包括其原型屬性。
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.gender = 'male';
const person = new Person('Jack', 18);
console.log(Object.keys(person));
// Output: ["name", "age"]
2、使用for-in循環獲取所有屬性
如果您需要獲取對象的所有屬性,包括它自身的和繼承的屬性,您可以使用for-in循環:
for (const key in obj) {
console.log(key);
}
3、兼容性問題
Object.keys()方法在ES5中被引入,因此在舊版瀏覽器(如IE8及以下版本)中可能不被支持。
四、總結
Object.keys()方法是對JavaScript中對象操作不可或缺的一部分。該方法可以用於許多用途,如過濾對象屬性、迭代對象屬性並判斷對象是否為空。在使用該方法時,需要注意對象原型屬性不會被枚舉以及瀏覽器兼容性問題等注意事項。
下面是一個完整的代碼示例:
// 對象屬性迭代
const obj = {'name':'Jack','age':18,'gender':'male'};
Object.keys(obj).forEach(function(key) {
console.log(key, obj[key]);
});
// Output: name Jack
// age 18
// gender male
// 判斷對象是否為空
const obj = {};
if (Object.keys(obj).length === 0) {
console.log('Object is empty');
}
// Output: Object is empty
// 過濾對象屬性
const obj = {'name':'Jack','age':18,'gender':'male'};
const filteredObj = Object.keys(obj).filter(key => key !== 'age').reduce((obj, key) => {
obj[key] = obj[key];
return obj;
}, {});
console.log(filteredObj);
// Output: {"name": "Jack", "gender": "male"}
// 對象原型屬性不會被枚舉
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.gender = 'male';
const person = new Person('Jack', 18);
console.log(Object.keys(person));
// Output: ["name", "age"]
// for-in循環獲取所有屬性
for (const key in obj) {
console.log(key);
}
// 兼容性問題
// IE8及以下版本不支持Object.keys()方法
原創文章,作者:CLVKK,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/332631.html