在前端开发中,我们经常需要对对象进行遍历,以获取或修改对象的属性值。ES6之前,我们主要是使用 for...in 循环来实现对象的遍历。但是,for...in 循环有以下几个缺点:
- 遍历顺序不确定,不同的 JavaScript 引擎可能会遍历的顺序不同。
- 遍历时会把对象的原型链上的属性也遍历出来,需要通过 hasOwnProperty 判断是否为自身属性。
- 不支持 Map 和 Set 数据结构的遍历。
ES8中引入了 Object.entries() 方法,该方法可以将对象转成键值对的数组形式,方便进行遍历。结合 for...of 循环,我们可以更方便地遍历对象。
Object.entries() 方法
Object.entries() 方法返回一个给定对象自己可枚举属性的键值对数组。该方法的语法如下:
Object.entries(obj);
其中,obj 是需要转换为键值对数组的对象。
Object.entries() 方法返回的数组形式如下:
[ [key1, value1], [key2, value2], ... ]
可以通过 for...of 循环或者数组的 forEach() 方法进行遍历。
for...of 循环
ES6中引入了 for...of 循环,该循环可以遍历数组、字符串、Map、Set 等可迭代对象。for...of 循环的语法如下:
for (variable of object) { statement }
其中,variable 为循环中的变量,object 为要遍历的对象。for...of 循环会迭代遍历 object 对象,并将当前的值赋值给 variable,然后执行 statement 语句。
结合 Object.entries() 方法和 for...of 循环,我们可以用以下方法遍历对象:
const obj = {a: 1, b: 2, c: 3}; for (const [key, value] of Object.entries(obj)) { console.log(key, value); }
输出结果为:
a 1 b 2 c 3
示例代码
以下示例代码演示了如何利用 Object.entries() 和 for...of 循环实现对象的遍历。
-- -------------------- ---- ------- -- ---- ----- --- - --- -- -- -- -- --- --- ------ ----- ------ -- -------------------- - ---------------- ------- - -- --- ---- ----- --- - --- ------------- ------ ------- ---- ---------- ------- --- ------ ----- ------ -- ---- - ---------------- ------- - -- --- ---- ----- --- - --- ------- -- ---- --- ------ ----- -- ---- - ------------------- -展开代码
通过以上示例代码,我们可以更加方便地遍历对象。在实际开发中,可以根据实际情况选择适合的遍历方式。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67b803ee306f20b3a656f969