JavaScript遍历

JavaScript遍历

对象与数组

因为for…in遍历不仅仅遍历自身的属性,原型链上的所有属性都将被访问

const a=[2,3,4,123]
a.__proto__.name="张三"
for (let aKey in a) {
    console.log(a[aKey])
}
/*   我本想打印的是数组a里面的值 结果将原型里面的属性name的值也打印出来了,这并非我是想要的。
2
3
4
123
张三
*/
//此时用for...of可以很好的解决这个问题

for (let aKey of a) {
    console.log(aKey)
}
/*  
2
3
4
123
*/

for…of遍历并非所有的对象都不能使用若有iterator接口就可以实现此遍历,有此接口的对象有 Map,Set对象等。

Iterator(遍历器)

概念

  • 遍历器(Iterator)是一种机制。它是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署 Iterator 接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)。

作用

  • 为各种数据结构,提供一个统一的、简便的访问接口;
  • 使得数据结构的成员能够按某种次序排列;
  • ES6 创造了一种新的遍历命令for...of循环,Iterator 接口主要供for...of消费。

原生具备iterator接口的数据结构为

  • Array
  • Map
  • Set
  • String
  • TypedArray
  • 函数的 arguments 对象
  • NodeList 对象

具有遍历器可以使用的方法

for…of
const array=[]
for (let aKey of "string") {
    console.log(aKey) ;
    array.push(akey);
}
扩展运算符
const array=[..."string"];

判断是否存在遍历器

  • 函数(Function ,未经过new实例化)
//例如Set函数
console.log(Set.prototype[Symbol.iterator])
//若不为undefined则存在遍历器
  • 对象
const a="stirng"
console.log(a.__proto__[Symbol.iterator])
//若不为undefined则存在遍历器
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值