欧易下载
欧易交易所
<欧易官方
欧易app
欧易下载
欧易交易所
欧易官方
欧易app
chrome浏览器
谷歌浏览器
快连下载
快连下载
快连下载
chrome浏览器
谷歌浏览器
快连下载
快连下载
快连下载
快连
快连
快连
快连下载
whatsapp网页版
whatsapp网页版
whatsapp网页版
whatsapp网页版
快连
快连
快连下载
whatsapp网页版
whatsapp网页版
whatsapp网页版
whatsapp网页版
JavaScript中循环遍历JSON数组对象的几种常用方法
在JavaScript开发中,处理JSON数组对象是非常常见的操作,多种遍历JSON数组对象的方法,能够帮助我们更高效地操作数据,本文将介绍几种常用的循环遍历JSON数组对象的方法,包括传统的for循环、for...of循环、forEach()方法、map()方法以及for...in循环等,并分析它们的适用场景和优缺点。
使用for循环遍历
for循环是最基础、最传统的遍历方式,适用于任何数组,包括JSON数组对象。
let jsonArray = [
{id: 1, name: '张三', age: 25},
{id: 2, name: '李四', age: 30},
{id: 3, name: '王五', age: 28}
];
for (let i = 0; i < jsonArray.length; i++) {
console.log(jsonArray[i].id, jsonArray[i].name, jsonArray[i].age);
}
优点:
- 兼容性最好,所有浏览器都支持
- 可以灵活控制循环的起始和结束点
- 可以在循环中修改索引
缺点:
- 代码相对冗长
- 容易出错(如索引越界)
使用for...of循环遍历
for...of是ES6引入的循环语法,专门用于遍历可迭代对象(如数组、字符串等)。
let jsonArray = [
{id: 1, name: '张三', age: 25},
{id: 2, name: '李四', age: 30},
{id: 3, name: '王五', age: 28}
];
for (let item of jsonArray) {
console.log(item.id, item.name, item.age);
}
优点:
- 代码简洁易读
- 直接获取数组元素,无需索引
- 不会遍历数组原型链上的属性
缺点:
- 无法直接获取索引(除非配合entries())
- 不能在循环中动态修改遍历范围
使用forEach()方法遍历
forEach()是数组原型上的一个方法,对数组的每个元素执行一次提供的函数。
let jsonArray = [
{id: 1, name: '张三', age: 25},
{id: 2, name: '李四', age: 30},
{id: 3, name: '王五', age: 28}
];
jsonArray.forEach((item, index) => {
console.log(index, item.id, item.name, item.age);
});
优点:
- 代码简洁,函数式编程风格
- 可以同时获取元素和索引
- 不会修改原数组(除非在回调中修改)
缺点:
- 无法使用break或continue跳出循环
- 对于空数组不会执行回调
- 兼容性较好(IE9+部分支持,IE11完全支持)
使用map()方法遍历
map()方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后的返回值。
let jsonArray = [
{id: 1, name: '张三', age: 25},
{id: 2, name: '李四', age: 30},
{id: 3, name: '王五', age: 28}
];
let newArray = jsonArray.map(item => {
return {
id: item.id,
displayName: item.name,
isAdult: item.age >= 18
};
});
console.log(newArray);
优点:
- 函数式编程,不可变性
- 可以方便地转换和映射数据
- 返回新数组,不修改原数组
缺点:
- 总是返回新数组,即使不需要
- 无法使用break或continue跳出循环
- 对于空数组会返回空数组
使用for...in循环遍历
for...in循环用于遍历对象的可枚举属性,包括原型链上的属性,不推荐直接用于数组遍历。
let jsonArray = [
{id: 1, name: '张三', age: 25},
{id: 2, name: '李四', age: 30},
{id: 3, name: '王五', age: 28}
];
for (let index in jsonArray) {
if (jsonArray.hasOwnProperty(index)) {
console.log(jsonArray[index].id, jsonArray[index].name, jsonArray[index].age);
}
}
优点:
- 可以遍历对象的可枚举属性
- 可以遍历数组的索引
缺点:
- 会遍历原型链上的属性(需配合hasOwnProperty检查)
- 遍历顺序不确定(现代JS引擎按数字顺序遍历数组索引)
- 不推荐用于数组遍历,更适合对象遍历
使用for...of与entries()结合遍历
如果同时需要索引和元素值,可以使用entries()方法结合for...of。
let jsonArray = [
{id: 1, name: '张三', age: 25},
{id: 2, name: '李四', age: 30},
{id: 3, name: '王五', age: 28}
};
for (let [index, item] of jsonArray.entries()) {
console.log(index, item.id, item.name, item.age);
}
优点:
- 同时获取索引和元素值
- 代码简洁
- 可使用break或continue
缺点:
- entries()返回的是迭代器,需要解构赋值
- 兼容性略差(IE不支持)
总结与选择建议
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| for循环 | 需要精确控制循环时 | 灵活,兼容性好 | 代码冗长 |
| for...of | 简单遍历数组元素 | 代码简洁,直接获取元素 | 无法直接获取索引 |
| forEach() | 需要索引且不需要跳出循环 | 同时获取元素和索引 | 无法使用break/continue |
| map() | 需要转换或映射数据 | 函数式,返回新数组 | 总是返回数组 |
| for...in | 遍历对象属性 | 可遍历对象 | 不推荐用于数组 |
| for...of+entries() | 需要索引和元素 | 同时获取两者 | 兼容性一般 |
选择建议:
- 如果只是简单遍历数组元素,优先使用for...of
- 如果需要索引且不需要跳出循环,使用forEach()
- 如果需要转换数据,使用map()
- 避免使用for...in遍历数组
- 在需要精确控制循环时使用传统for循环
这些遍历方法,并根据实际场景选择合适的方案,能够让我们在处理JSON数组对象时更加得心应手。



还没有评论,来说两句吧...