全面解析JavaScript里的循环方法之forEach,for-in,for-of


Posted in Javascript onApril 20, 2020

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

JavaScript诞生已经有20多年了,我们一直使用的用来循环一个数组的方法是这样的:

for (var index = 0; index < myArray.length; index++) {
console.log(myArray[index]);
}

自从JavaScript5起,我们开始可以使用内置的 forEach 方法:

myArray.forEach(function (value) {
console.log(value);
});

写法简单了许多,但也有短处:你不能中断循环(使用语句或使用语句。

JavaScript里还有一种循环方法:。

for-in循环实际是为循环”enumerable“对象而设计的:

var obj = {a:1, b:2, c:3};
for (var prop in obj) {
console.log("obj." + prop + " = " + obj[prop]);
}
// 输出:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"

你也可以用它来循环一个数组:

for (var index in myArray) { // 不推荐这样
console.log(myArray[index]);
}

不推荐用for-in来循环一个数组,因为,不像对象,数组的 index 跟普通的对象属性不一样,是重要的数值序列指标。

总之, for ? in 是用来循环带有字符串key的对象的方法。

for-of循环

JavaScript6里引入了一种新的循环方法,它就是for-of循环,它既比传统的for循环简洁,同时弥补了forEach和for-in循环的短板。

我们看一下它的for-of的语法:

for (var value of myArray) {
console.log(value);
}

for-of的语法看起来跟for-in很相似,但它的功能却丰富的多,它能循环很多东西。

for-of循环使用例子:

let iterable = [10, 20, 30];
for (let value of iterable) {
console.log(value);
}
// 10
// 20
// 30

我们可以使用来替代,这样它就变成了在循环里的不可修改的静态变量。

let iterable = [10, 20, 30];
for (const value of iterable) {
console.log(value);
}
// 10
// 20
// 30

循环一个字符串:

let iterable = "boo";
for (let value of iterable) {
console.log(value);
}
// "b"
// "o"
// "o"
let iterable = new Uint8Array([0x00, 0xff]);
for (let value of iterable) {
console.log(value);
}
// 0
// 255
let iterable = new Map([["a", 1], ["b", 2], ["c", 3]]);
for (let [key, value] of iterable) {
console.log(value);
}
// 1
// 2
// 3
for (let entry of iterable) {
console.log(entry);
}
// [a, 1]
// [b, 2]
// [c, 3]
let iterable = new Set([1, 1, 2, 2, 3, 3]);
for (let value of iterable) {
console.log(value);
}
// 1
// 2
// 3

循环一个 DOM collection

循环一个DOM collections,比如 NodeList ,之前我们讨论过 如何循环一个NodeList ,现在方便了,可以直接使用for-of循环:

// Note: This will only work in platforms that have
// implemented NodeList.prototype[Symbol.iterator]
let articleParagraphs = document.querySelectorAll("article > p");
for (let paragraph of articleParagraphs) {
paragraph.classList.add("read");
}

循环一个拥有enumerable属性的对象

for?of循环并不能直接使用在普通的对象上,但如果我们按对象所拥有的属性进行循环,可使用内置的Object.keys()方法:

for (var key of Object.keys(someObject)) {
console.log(key + ": " + someObject[key]);
}

循环一个生成器(generators)

我们可循环一个生成器(generators):

function* fibonacci() { // a generator function
let [prev, curr] = [0, 1];
while (true) {
[prev, curr] = [curr, prev + curr];
yield curr;
}
}
for (let n of fibonacci()) {
console.log(n);
// truncate the sequence at 1000
if (n >= 1000) {
break;
}
}

到此这篇关于全面解析JavaScript里的循环方法之forEach,for-in,for-of的文章就介绍到这了,更多相关js循环方法foreach for in for of内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
Div自动滚动到末尾的代码
Oct 26 Javascript
Javascript学习笔记5 类和对象
Jan 11 Javascript
js 通用javascript函数库整理
Aug 14 Javascript
理清apply(),call()的区别和关系
Aug 14 Javascript
JS删除数组元素的函数介绍
Mar 27 Javascript
IE中图片的onload事件无效问题和解决方法
Jun 06 Javascript
快速解决js中window.location.href不工作的问题
Nov 02 Javascript
jQuery UI Grid 模态框中的表格实例代码
Apr 01 jQuery
vue2 自定义动态组件所遇到的问题
Jun 08 Javascript
bootstrap精简教程_动力节点Java学院整理
Jul 14 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
Sep 05 Javascript
Ajax常用封装库——Axios的使用
May 08 Javascript
Javascript之Date对象详解
Jun 07 #Javascript
批量下载对路网图片并生成html的实现方法
Jun 07 #Javascript
javascript之Boolean类型对象
Jun 07 #Javascript
jQuery简单实现仿京东分类导航层效果
Jun 07 #Javascript
javascript之Array 数组对象详解
Jun 07 #Javascript
JavaScript语言精粹经典实例(整理篇)
Jun 07 #Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
Jun 07 #Javascript
You might like
php FLEA中二叉树数组的遍历输出
2012/09/26 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
浅谈php的优缺点
2015/07/14 PHP
php实现将HTML页面转换成word并且保存的方法
2016/10/14 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
音乐播放用的的几个函数
2006/09/07 Javascript
简单三步,搞掂内存泄漏
2007/03/10 Javascript
拖拉表格的JS函数
2008/11/20 Javascript
通过Jquery遍历Json的两种数据结构的实现代码
2011/01/19 Javascript
javascript语言结构小记(一)
2011/09/10 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
2013/01/09 Javascript
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
在Linux上用forever实现Node.js项目自启动
2014/07/09 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
2015/12/17 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
Vue ElementUI之Form表单验证遇到的问题
2017/08/21 Javascript
vue实现记事本功能
2019/06/26 Javascript
微信小程序图片右边加两行文字的代码
2020/04/23 Javascript
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
js实现双色球效果
2020/08/02 Javascript
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
使用Python操作excel文件的实例代码
2017/10/15 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
matplotlib作图添加表格实例代码
2018/01/23 Python
NULL是什么,它是怎么定义的
2015/05/09 面试题
教师开学感言
2014/02/14 职场文书
岗位竞聘演讲稿范文
2014/04/24 职场文书
激励员工的口号
2014/06/16 职场文书
出国签证在职证明范本
2014/11/24 职场文书
2015年新教师工作总结
2015/04/28 职场文书
小马王观后感
2015/06/11 职场文书
2015年机关作风和效能建设工作总结
2015/07/23 职场文书
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP