python中iterable_iterable

python中iterable_iterable遍历 Array 可以采用下标循环 遍历 Map 和 Set 就无法使用下标 为了统一集合类型 ES6 标准引入了新的 iterable 类型 Array Map 和 Set 都属于 iterable 类型 具有 iterable 类型的集合可以通过新的 for of 循环来遍历 for of 循环是 ES6 引入的新的语法 请测试你的浏览器是否支持 usestrict vara 1 2 3 for

遍历Array可以采用下标循环,遍历Map和Set就无法使用下标。为了统一集合类型,ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型。

具有iterable类型的集合可以通过新的for … of循环来遍历。

for … of循环是ES6引入的新的语法,请测试你的浏览器是否支持:

‘use strict’;

var a = [1, 2, 3];

for (var x of a) {

}

console.log(‘你的浏览器支持for … of’);

—-

// 请直接运行测试

用for … of循环遍历集合,用法如下:

var a = [‘A’, ‘B’, ‘C’];

var s = new Set([‘A’, ‘B’, ‘C’]);

var m = new Map([[1, ‘x’], [2, ‘y’], [3, ‘z’]]);

for (var x of a) { // 遍历Array

console.log(x);

}

for (var x of s) { // 遍历Set

console.log(x);

}

for (var x of m) { // 遍历Map

console.log(x[0] + ‘=’ + x[1]);

}

你可能会有疑问,for … of循环和for … in循环有何区别?

for … in循环由于历史遗留问题,它遍历的实际上是对象的属性名称。一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性。

当我们手动给Array对象添加了额外的属性后,for … in循环将带来意想不到的意外效果:

var a = [‘A’, ‘B’, ‘C’];

a.name = ‘Hello’;

for (var x in a) {

console.log(x); // ‘0’, ‘1’, ‘2’, ‘name’

}

for … in循环将把name包括在内,但Array的length属性却不包括在内。

for … of循环则完全修复了这些问题,它只循环集合本身的元素:

var a = [‘A’, ‘B’, ‘C’];

a.name = ‘Hello’;

for (var x of a) {

console.log(x); // ‘A’, ‘B’, ‘C’

}

这就是为什么要引入新的for … of循环。

然而,更好的方式是直接使用iterable内置的forEach方法,它接收一个函数,每次迭代就自动回调该函数。以Array为例:

‘use strict’;

var a = [‘A’, ‘B’, ‘C’];

—-

a.forEach(function (element, index, array) {

// element: 指向当前元素的值

// index: 指向当前索引

// array: 指向Array对象本身

console.log(element + ‘, index = ‘ + index);

});

注意,forEach()方法是ES5.1标准引入的,你需要测试浏览器是否支持。

Set与Array类似,但Set没有索引,因此回调函数的前两个参数都是元素本身:

var s = new Set([‘A’, ‘B’, ‘C’]);

s.forEach(function (element, sameElement, set) {

console.log(element);

});

Map的回调函数参数依次为value、key和map本身:

var m = new Map([[1, ‘x’], [2, ‘y’], [3, ‘z’]]);

m.forEach(function (value, key, map) {

console.log(value);

});

如果对某些参数不感兴趣,由于JavaScript的函数调用不要求参数必须一致,因此可以忽略它们。例如,只需要获得Array的element:

var a = [‘A’, ‘B’, ‘C’];

a.forEach(function (element) {

console.log(element);

});

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202724.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午11:27
下一篇 2026年3月19日 下午11:27


相关推荐

  • 学习笔记 – EasyUI官方网站演示

    学习笔记 – EasyUI官方网站演示EasyUI官方网站演示撰写:2016/03/21更新:2016/04/07博客地址:http://www.cnblogs.com/gibbonnet/p/5362801.html演示地址:h

    2022年8月1日
    10
  • 【Nano Banana Pro詳解】使用方法&免費方案全面介紹

    【Nano Banana Pro詳解】使用方法&免費方案全面介紹

    2026年3月13日
    2
  • 基于tensorflow的LSTM 时间序列预测模型

    时间序列预测(曲线回归或曲线拟合),结构为训练数据生成-》隐藏输入层-》LSTM神经层-》隐藏输入层-》结果,也可以采用LSTM神经层-》全连接层(多层的普通神经网络)构成,训练效果未对比,与参数调优相关。参数说明:TIME_STEPS:RNN训练的步数,一次训练输入的序列长度;INPUT_SIZE:输入序列中,单个输入的维度,用于曲线拟合或者回归的话,维度即为1;BATCH_SIZE:训练的批…

    2022年4月9日
    45
  • mysql 8.0 忘记root密码_linux系统重置root密码

    mysql 8.0 忘记root密码_linux系统重置root密码在安装完数据库后,由于自己不小心直接关闭了安装窗口,或者长时间没有使用root用户登录系统,导致忘记了root密码,这时就需要重置MySQL的root密码。当然,最简单方式自然是删除数据库的data目录,然后重新安装数据库。但是很多时间我们需要保留data目录中的数据,所以就需要查找如何重置root密码。我们知道,在知道root密码时,可以使用“ALTERUSER‘root’@’local…

    2022年10月9日
    5
  • css盒子模型及其实战案例(上)

    css盒子模型及其实战案例(上)盒子模型是我们网页布局中很重要的一块内容 今天阿牛就来总结一部分内容 各位小伙伴认真看哦 干货满满

    2025年8月19日
    5
  • miniconda可以运行python吗_pycharm怎么配置anaconda环境

    miniconda可以运行python吗_pycharm怎么配置anaconda环境一,Pytorch环境安装打开已经装好的miniconda,用condaenvlist命令查看有哪些已经配置好的环境。如图所示,目前显示有两个环境。创建虚拟环境condacreate-n环境名字(英文)python=x.x(python版本)如:condacreate-npytorchpython=3.7用命令condaactivate虚拟环境名称,进入环境。安装pytorch环境,可以在官网查看相应的命令。这里选用的是cpu版本,命令如下:condain

    2022年8月27日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号