浅谈JavaScript中的forEach、for in和for of循环的基本用法和区别。_ai酸的博文
forEach、for in和for of的基本用法和区别。...
forEach
forEach
是Array原型链上的函数。
Array.prototype.forEach()
语法
arr.forEach(callback(currentValue [, index [, array]])[, thisArg])
currentValue:当前值
index:当前索引
array:正在操作的数组
thisArg:当执行回调函数 callback 时,用作 this 的值。
缺点
- callback中不能使用break。

for in
for-in是为遍历对象而设计的,不适用于遍历数组。for in循环遍历的往往是键名、索引,所以它更适合遍历对象。
语法
for(let key in arr) {
//do something...
}
缺点
- 遍历时使用的
key
是string字符串类型。for in遍历数组时会遍历数组所有的可枚举属性,包括原型(hasOwnPropery可解决原型问题)。示例
let arr = [2, 6, 1, 8, 3]
arr.property = '数组arr的属性property'
// 原型链上添加方法
Array.prototype.show = () => {
console.log('Array显式原型对象上的方法show');
}
// for in循环
for(let i in arr) {
console.log(typeof i,i,arr[i]);
}
for of
for of适用遍历数组、字符串、Set、Map、arguments、NodeList等拥有迭代器对象的集合,对于普通对象,需要自己写Symbol.iterator
。for of遍历的结果往往是值,因此for of更适合遍历数组。
语法
for(const item of 可遍历对象){}
缺点
不能遍历普通对象,需要自己写另外的方法。
以下是解决方法:
const obj = {
0: 'a',
1: 'b',
length: 2
}
// 法一
obj[Symbol.iterator] = Array.prototype[Symbol.iterator]
// 法二
obj[Symbol.iterator] = () => {
let index = 0;
return {
next() {
if (index < obj.length) {
value = obj[index],
done = false
} else {
value = undefined,
done = true
}
index++;
return {
value,
done
}
}
}
}
for(const item of obj){
console.log(item);
}
效率问题
长度缓存普通for > 普通for > forEach、for of、for in。
- 上一篇:JS构造函数_Suda Masaki534
- 下一篇:from表单_Felix.,
相关文章
- OpenStack架构详解_wespten_openstack架构
- 使用MapReduce求ncdc气象数据中的最低温度_kiritobryant_mapreduce求每年最低温度
- @Validated注解详解,分组校验,嵌套校验_迷人的小松子_validated注解的作用
- Idea:Idea导入Module、子Module的方式及其可能遇到的问题_Julian Qian_idea导入module项目
- C语言 - 回文数_南花__回文数c语言程序编写
- 让学前端不再害怕英语单词(三)_前端小王hs
- 网络爬虫是什么?怎么学python爬虫_Itmastergo_网络爬虫工具有哪些
- 基于PHP+小程序(MINA框架)+Mysql数据库的有声读物音频播放小程序系统设计与实现_黄菊华老师_听书 小程序源码
- SpringCloud无法获取Nacos中的配置文件信息_会脸红的情先生_springcloud读取不到nacos配置文件
- 程序员都是这样关机的_Weraphael
- Eolink如何解决API测试痛点_无 羡?
- 大数据Hadoop之??智能数据分析可视化BI软件 FineBI_大数据老司机_hadoop中有什么能进行数据可视化的吗
- 网络爬虫是什么?怎么学python爬虫_Itmastergo_网络爬虫工具有哪些
- 操作系统生产者-消费者问题(PV操作)(Java实现)_Hard Coder_生产者消费者问题操作系统java
- DC-3靶机_:Carmelo Anthony_dc3靶机
- python中的lambda函数_柳小葱_lambda函数python