全面解析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 相关文章推荐
js 设置选中行的样式的实现代码
May 24 Javascript
jQuery 幻灯片插件(带缩略图功能)
Jan 24 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
Jan 29 Javascript
jQuery仿gmail实现fixed布局的方法
May 27 Javascript
js代码实现无缝滚动(文字和图片)
Aug 20 Javascript
javascript实现日期时间动态显示示例代码
Sep 08 Javascript
JS随机打乱数组的方法小结
Jun 22 Javascript
微信小程序 Storage API实例详解
Oct 02 Javascript
webix+springmvc session超时跳转登录页面
Oct 30 Javascript
JS数组去重(4种方法)
Mar 27 Javascript
微信小程序 数据遍历的实现
Apr 05 Javascript
jquery实现放大镜简洁代码(推荐)
Jun 08 jQuery
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
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
php xml文件操作实现代码(二)
2009/03/20 PHP
php生成短网址/短链接原理和用法实例分析
2020/05/29 PHP
JavaScript入门教程(8) Location地址对象
2009/01/31 Javascript
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
jQuery响应鼠标事件并隐藏与显示input默认值
2014/08/24 Javascript
AngularJS入门教程(二):AngularJS模板
2014/12/06 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
jQuery实现的简单分页示例
2016/06/01 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
2017/03/08 Javascript
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
浅谈Node模块系统及其模式
2017/11/17 Javascript
微信小程序滑动选择器的实现代码
2018/08/10 Javascript
vue中watch和computed的区别与使用方法
2020/08/23 Javascript
tornado捕获和处理404错误的方法
2014/02/26 Python
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
Python处理JSON数据并生成条形图
2016/08/05 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
使用IDLE的Python shell窗口实例详解
2019/11/19 Python
python实现俄罗斯方块小游戏
2020/04/24 Python
css 元素选择器的简单实例
2016/05/23 HTML / CSS
Conforama西班牙:您的家具、装饰和电器商店
2020/02/21 全球购物
Java语言程序设计测试题选择题部分
2014/04/03 面试题
医学检验专业个人求职信范文
2013/12/04 职场文书
毕业生自我鉴定
2013/12/04 职场文书
竞选学生会主席演讲稿
2014/04/24 职场文书
志愿者活动总结范文
2014/04/26 职场文书
副护士长竞聘演讲稿
2014/04/30 职场文书
电子商务优秀毕业生求职信
2014/07/11 职场文书
主要领导对照检查材料
2014/08/26 职场文书
民主评议教师党员自我评价
2015/03/04 职场文书
mysql多表查询-笔记七
2021/04/05 MySQL