JavaScript高级数据类型之iterable

简介: 引入对JavaScript有过一定了解的人都知道,array是可以用下标循环进行遍历的,因为每个array中的元素都具有其隐藏的索引(即我们上面理解的下标)。但是经过前两天的学习,我们知道Map是一种高级的对象,相对于普通对象,map的键可以是任意值(比如数值Number)

引入


对JavaScript有过一定了解的人都知道,array是可以用下标循环进行遍历的,因为每个array中的元素都具有其隐藏的索引(即我们上面理解的下标)。

但是经过前两天的学习,我们知道Map是一种高级的对象,相对于普通对象,map的键可以是任意值(比如数值Number)

那么有没有高级的array,可以允许我们对其进行遍历?

今天我们就来了解一下iterable这一类型


1.什么是iterable


先回答一下我们上面粗体的问题:

很遗憾,js没有设置一个单独的高级的array来满足我们遍历的要求

因为js有更好的解决办法:

ES6标准中,js引入了iterable这一类型,包括了array、map、set等看上去像是“一个数据序列”的类型

这些interable类型的数据都可以用for of来遍历:


2. for...of循环


我们以一个具体的例子来说明for of循环的用法:

var a = ['1', '2', '3'];
for (var x of a) { // 遍历Array
    console.log(x);
}


我们先声明一个变量a,a中包含了"1","2","3"三个字符串

紧接着我们用for var x of a 来定义一个x,这就是我们遍历的迭代变量,之后x便会从头一个个变为a中的值

也就是变成“1”、“2”、“3”并推动着进行第一次第二次第三次循环

每次循环执行代码块console.log(x)来把x的值用日志的方式打印出来。

同理用在map和set类型的数据上也是这样:


var s = new Set(['1', '2', '3']);
var m = new Map([[1, 'a'], [2, 'b'], [3, 'c']]);
for (var x of s) { // 遍历Set
    console.log(x);
}
for (var x of m) { // 遍历Map
    console.log(x[0] + '=' + x[1]);//输出键值对
}


3。探讨for of 和for in 的区别


除了上面所说的,map和set不能采用下标循环来迭代之外,for in和for of还有一个非常不一样的地方——

for in会遍历对象的每个属性名称

array本身也是一个对象,他除了有元素之外,还有本身自带的属性。就拿前面的a为例,a作为array包含了"1"、"2"、"3"三个元素。但是如果从更底层的方面来理解,把a看作一个普通的对象,给a增加一个属性,那么for in就会把这个属性也当作一个元素:

var a = ['1', '2', '3'];
a.name = 'juejin';
for (var x in a) {
    console.log(x); // '0', '1', '2', 'name'
}


如上,我们新加的name也被算进去了。

但是我们采用for of就不会出现这样的情况.并且返回的不是元素的下标(索引)而是元素本身

相关文章
|
2月前
|
存储 JavaScript 对象存储
js检测数据类型有那些方法
js检测数据类型有那些方法
140 59
|
3月前
|
JavaScript
js基础数据类型
js基础数据类型
29 1
|
29天前
|
存储 JavaScript 前端开发
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
JavaScript 数据类型分为基本数据类型和引用数据类型。基本数据类型(如 string、number 等)具有不可变性,按值访问,存储在栈内存中。引用数据类型(如 Object、Array 等)存储在堆内存中,按引用访问,值是可变的。本文深入探讨了这两种数据类型的特性、存储方式、以及检测数据类型的两种常用方法——typeof 和 instanceof,帮助开发者更好地理解 JavaScript 内存模型和类型检测机制。
67 0
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
|
1月前
|
JavaScript 前端开发 开发者
【干货拿走】JavaScript中最全的数据类型判断方法!!!!
【干货拿走】JavaScript中最全的数据类型判断方法!!!!
22 1
|
30天前
|
存储 JavaScript 前端开发
JavaScript数据类型全解:编写通用函数,精准判断各种数据类型
JavaScript数据类型全解:编写通用函数,精准判断各种数据类型
18 0
|
2月前
|
存储 前端开发 JavaScript
前端基础(三)_JavaScript数据类型(基本数据类型、复杂数据类型)
本文详细介绍了JavaScript中的数据类型,包括基本数据类型(Number、String、Boolean、Undefined、Null)和复杂数据类型(Object),并解释了如何使用`typeof`操作符来识别变量的数据类型。同时,还讨论了对象、函数和数组等复杂数据类型的使用方式。
44 2
|
2月前
|
JavaScript 前端开发
JavaScript基础知识-基本数据类型和引用数据类型
关于JavaScript基础知识的文章,主要介绍了基本数据类型和引用数据类型。
41 2
JavaScript基础知识-基本数据类型和引用数据类型
|
3月前
|
JavaScript 前端开发
JavaScript基础&实战(1)js的基本语法、标识符、数据类型
这篇文章是JavaScript基础与实战教程的第一部分,涵盖了JavaScript的基本语法、标识符、数据类型以及如何进行强制类型转换,通过代码示例介绍了JS的输出语句、编写位置和数据类型转换方法。
JavaScript基础&实战(1)js的基本语法、标识符、数据类型
|
3月前
|
开发者 图形学 开发工具
Unity编辑器神级扩展攻略:从批量操作到定制Inspector界面,手把手教你编写高效开发工具,解锁编辑器隐藏潜能
【8月更文挑战第31天】Unity是一款强大的游戏开发引擎,支持多平台发布与高度可定制的编辑器环境。通过自定义编辑器工具,开发者能显著提升工作效率。本文介绍如何使用C#脚本扩展Unity编辑器功能,包括批量调整游戏对象位置、创建自定义Inspector界面及项目统计窗口等实用工具,并提供具体示例代码。理解并应用这些技巧,可大幅优化开发流程,提高生产力。
351 1
|
3月前
|
JavaScript 前端开发
JS常用数据类型转换(数字型和字符串型之间转换)
JS常用数据类型转换(数字型和字符串型之间转换)
62 2