当前位置: 首页 > 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.hskmm.com/?act=detail&tid=16237

相关文章:

  • day 10 (函数2 )
  • 入驻了爱发电
  • 奖励函数(双足)
  • 离线部署镜像仓库搭建
  • Temporal和Airflow有什么差别
  • lc1035-不相交的线
  • 自我介绍与未来规划
  • 解构React Server Components:服务端序列化与流式传输的底层逻辑
  • js里面的单引号、双引号及反引号的用法
  • 牛客刷题-Day4
  • Skinned Mesh Renderer与LOD系统蒙皮变形异常全解析
  • K8S (Containerd)初始化安装流程
  • ?模拟赛 赛后总结
  • 日志|动态规划|最长回文子串|最长公共子序列|HTML CSS
  • Java 字段命名避坑: success和isSuccess
  • OTA升级时软件异常复位问题分析
  • Atcoder Educational DP Contest 做题记录
  • 20250924
  • 跨端边云时序数据管理新范式:Apache IoTDB 的 DB+AI 融合之道 - 实践
  • 《Real-Time Rendering》第二章 图形渲染管线
  • 放弃Unity后,我为什么选择了Unigine?
  • PHP 与 Java 的终极对比:2025年,开发者该如何选择? - 详解
  • 题单63——流程控制
  • 银行同业存单的信用等级
  • 软件技术基础第一次作业
  • 2025XDOJ个人题解——写在前面
  • 适合电子纸屏幕的简易象棋打谱程序
  • 0924
  • java_string比较中的细节
  • 扫描线学习笔记