当前位置: 首页 > news >正文

js遍历对象

js遍历对象

JavaScript 对象是由键值对组成的集合,遍历对象即逐个访问这些键值对。

常见的遍历方法包括 for...in 循环、Object.keys()、Object.values() 和 Object.entries()。

在jquery中还经常使用$.each(obj, function(idx, itm){});来进行遍历。

以下就列出常见的遍历方式:

1. for...in

let obj = { a: 1, b: 2, c: 3 };
for (let key in obj) {console.log(key, obj[key]);
}

2. Object.keys(), Object.values(), Object.entries()

let obj = { a: 1, b: 2, c: 3 };
for (let key of Object.keys(obj)) {console.log(key);
}
for (let value of Object.values(obj)) {console.log(value);
}
for (let [key, value] of Object.entries(obj)) {console.log(key, value);
}

2.1 Object.keys()

let obj = { a: 1, b: 2, c: 3 };
for (let key of Object.keys(obj)) {console.log(key);
}

2.2 Object.values()

let obj = { a: 1, b: 2, c: 3 };
for (let value of Object.values(obj)) {console.log(value);
}

2.3 Object.entries()

let obj = { a: 1, b: 2, c: 3 };
for (let [key, value] of Object.entries(obj)) {console.log(key, value);
}

3. es6中新增的Lambda(箭头)函数

let obj = { a: 1, b: 2, c: 3 };
Object.entries(obj).forEach(([key, value]) => {console.log(key, value);
});

4. $.each

let obj = { a: 1, b: 2, c: 3 };
$.each(obj, function(key, value){console.log(key, value);});

遍历时候的注意事项

循环会遍历对象的所有可枚举属性,包括原型链上的属性。为了避免不必要的干扰,可以使用 hasOwnProperty 方法进行检查。

let obj = { a: 1, b: 2, c: 3 };
for (let key in obj) {if (obj.hasOwnProperty(key)) {console.log(key, obj[key]);}
}

另外,在处理大型对象时,性能优化至关重要。

如使用Object.keys()、Object.values() 和 Object.entries()等方法,在创建数组时会有一定的性能开销,因此在性能敏感的场景下,for...in 循环结合 hasOwnProperty 可能是更好的选择。

再有,在某些情况下,可以通过优化逻辑避免不必要的遍历。
例如,如果只需要查找某个特定属性,可以直接使用 in 操作符或 Object.hasOwnProperty() 方法。

let obj = { a: 1, b: 2, c: 3 };
if ('a' in obj) {console.log('Property "a" exists');
}

 

http://www.rkmt.cn/news/11188.html

相关文章:

  • 入驻了爱发电
  • 奖励函数(双足)
  • 离线部署镜像仓库搭建
  • 智能中控终端-多环境联动的智慧管控中枢
  • 自我介绍与未来规划
  • 解构React Server Components:服务端序列化与流式传输的底层逻辑
  • Skinned Mesh Renderer与LOD系统蒙皮变形异常全解析
  • ?模拟赛 赛后总结
  • 软件技术基础第一次作业
  • 2025XDOJ个人题解——写在前面
  • 0924
  • 扫描线学习笔记
  • AI完美声音克隆及情绪控制,与真人无异,Lark下载介绍
  • mysql慢sql配置
  • 新节点加入k8s集群命令查看 - 详解
  • 自动化测试脚本
  • WPF Datagrid loaded 79M items in mvvm , Microsoft.Extensions.DependencyInjection
  • 外部 Tomcat 部署详细 - 实践
  • 20231326《密码系统设计》第三周预习报告
  • FortiGate连接中国联通SDWAN
  • 【Golang】素材设计模式
  • 2025.9.24 闲话:Lucas 定理究极证明
  • 画矩形
  • NOIP 模拟赛八
  • 随便写的
  • Bcliux-docker-nacos2.2.0升级至2.2.3版本
  • 事件和图形界面(暂未完成)
  • Spring连环炮。哈罗面试:Spring Bean生命周期,Spring怎么创建Bean的,BFPP和BPP的x别
  • 软工9.24
  • 无法安装 WebView2! 没有它,此应用就无法运行(解决方式附安装包)