JavaScript中遍历对象的常用方法有以下几种
1. for…in循环:
这是最基本的遍历方式,可以遍历对象自身的和继承的可枚举属性。
let obj = {a: 1, b: 2};
for(let prop in obj) {
if(obj.hasOwnProperty(prop)) {
console.log(prop + ": " + obj[prop]);
}
}
2. Object.keys():
返回一个数组,包含对象自身的所有可枚举属性的属性名。
let obj = {a: 1, b: 2};
Object.keys(obj).forEach(key => {
console.log(key + ": " + obj[key]);
});
3. Object.values():
返回一个数组,包含对象自身的所有可枚举属性的属性值。
let obj = {a: 1, b: 2};
Object.values(obj).forEach(value => {
console.log(value);
});
4. Object.entries():
返回一个数组的数组,每个内部数组包含一个属性名和相应的属性值。
let obj = {a: 1, b: 2};
Object.entries(obj).forEach(([key, value]) => {
console.log(key + ": " + value);
});
5. Object.getOwnPropertyNames()
返回一个数组,包含对象自身的所有属性名(无论是否可枚举)。
let obj = Object.create({x: 100}); // 假设obj有一些继承属性
obj.a = 1;
Object.getOwnPropertyNames(obj).forEach(key => {
console.log(key + ": " + obj[key]);
});
6. Object.getOwnPropertySymbols()
如果对象有使用Symbol作为键的属性,此方法会返回这些Symbol属性名的数组。
let obj = {};
let sym = Symbol();
obj[sym] = 'symbolValue';
Object.getOwnPropertySymbols(obj).forEach(sym => {
console.log(sym + ": " + obj[sym]);
});
7. Reflect.ownKeys()
返回一个数组,包含了对象自身的所有键,无论键的类型是字符串、Symbol还是其他可迭代类型,并且不管是否可枚举。
let obj = {a: 1, [Symbol('b')]: 2};
Reflect.ownKeys(obj).forEach(key => {
console.log(key + ": " + obj[key]);
});