JavaScript 遍历 JSON 所有 Key 的方法
·
1️⃣ for…in 循环(最常用)
const json = {
name: "张三",
age: 25,
city: "北京"
};
for (let key in json) {
console.log(key); // name, age, city
console.log(json[key]); // 张三, 25, 北京
}
2️⃣ Object.keys()(推荐 ✅)
Object.keys(json).forEach(key => {
console.log(key, json[key]);
});
// 或
Object.keys(json).map(key => {
console.log(key);
});
3️⃣ Object.entries()(同时获取 key 和 value)
for (let [key, value] of Object.entries(json)) {
console.log(`${key}: ${value}`);
}
4️⃣ Object.getOwnPropertyNames()(包括不可枚举属性)
Object.getOwnPropertyNames(json).forEach(key => {
console.log(key);
});
🔄 递归遍历嵌套 JSON
function traverseKeys(obj, prefix = '') {
for (let key in obj) {
const fullKey = prefix ? `${prefix}.${key}` : key;
console.log(fullKey);
if (typeof obj[key] === 'object' && obj[key] !== null) {
traverseKeys(obj[key], fullKey); // 递归
}
}
}
const nestedJson = {
user: {
name: "张三",
address: {
city: "北京",
street: "长安街"
}
}
};
traverseKeys(nestedJson);
// 输出: user
// user.name
// user.address
// user.address.city
// user.address.street
📊 方法对比
| 方法 | 遍历原型链 | 包含 Symbol | 推荐场景 |
|---|---|---|---|
for...in |
✅ | ❌ | 简单遍历 |
Object.keys() |
❌ | ❌ | 日常推荐 |
Object.entries() |
❌ | ❌ | 需要 key+value |
getOwnPropertyNames() |
❌ | ✅ | 完整属性 |
💡 推荐使用 Object.keys() 或 Object.entries(),更安全且语义清晰!
更多推荐



所有评论(0)