各种遍历方法以及注意点

简介: 各种遍历方法以及注意点

参考 : https://es6.ruanyifeng.com/#docs/object

可枚举性
对象的每个属性都有一个描述对象(Descriptor),用来控制该属性的行为。Object.getOwnPropertyDescriptor方法可以获取该属性的描述对象。

let obj = {
    foo: 123 };
Object.getOwnPropertyDescriptor(obj, 'foo')
//  {
   
//    value: 123,
//    writable: true,
//    enumerable: true,
//    configurable: true
//  }

描述对象的enumerable属性,称为“可枚举性”,如果该属性为false,就表示某些操作会忽略当前属性。

目前,有四个操作会忽略enumerable为false的属性。

for...in循环:只遍历对象自身的和继承的可枚举的属性。
Object.keys():返回对象自身的所有可枚举的属性的键名。
JSON.stringify():只串行化对象自身的可枚举的属性。
Object.assign(): 忽略enumerable为false的属性,只拷贝对象自身的可枚举的属性。

//这四个操作之中,前三个是 ES5 就有的,最后一个Object.assign()是 ES6 新增

总的来说,操作中引入继承的属性会让问题复杂化,大多数时候,我们只关心对象自身的属性。所以,尽量不要用for...in循环,而用Object.keys()代替。
相关文章
|
5月前
集合中常见方法及遍历方式
集合中常见方法及遍历方式
37 1
|
4月前
|
索引 Python
如何优雅地遍历可迭代对象?
如何优雅地遍历可迭代对象?
30 0
|
算法 C++
87 C++ - 常用遍历算法
87 C++ - 常用遍历算法
49 0
|
8月前
|
C#
C# 循环遍历使用
C# 循环遍历使用
165 0
|
8月前
|
JavaScript 小程序
遍历类数组之获取多个dom节点并遍历
遍历类数组之获取多个dom节点并遍历
|
存储 机器学习/深度学习 人工智能
关于哈密顿路是否存在的遍历算法
我是怎么也没想到这个问题陪伴了我快十年的时光,占到了我生命的一半时光(当然不可能一直在死磕这道题),十年中每每学到一些新的知识都会进行一些尝试,但很多时候还是无功而返,大概在十天前复习数据结构相关知识的时候偶然发现了一个简单而且有趣的公式,然后灵感就来了,不过有一点点遗憾的是身为学数学的出身的,未能使用纯数学的方式解决,有一点点丢人,话不多说,请看正文。
138 0
关于哈密顿路是否存在的遍历算法
关于对象遍历的时候的一些排序问题
关于对象遍历的时候的一些排序问题
112 0
关于对象遍历的时候的一些排序问题
二叉树的创建,遍历完整代码
二叉树的创建,遍历完整代码
|
PHP 开发者
v-for遍历对象、数组
v-for遍历对象、数组
126 0

热门文章

最新文章