javascript遍历方法总结
forEach 循环
JavaScript诞生已经有20多年了,我们一直使用的用来循环一个数组的方法是这样的:
for (var index = 0; index < myArray.length; index++) {
console.log(myArray[index]);
}
自从 JavaScript 5 起,我们开始可以使用内置的 forEach 方法:
myArray.forEach(function (value) {
console.log(value);
});
写法简单了许多,但也有短处:你不能中断循环(使用 break 语句或使用 return 语句)。
for…in 循环
JavaScript里还有一种循环方法:for...in。
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 循环使用例子:
循环一个数组(Array):
let iterable = [10, 20, 30];
for (let value of iterable) {
console.log(value);
}
// 10
// 20
// 30
我们可以使用 const 来替代 let,这样它就变成了在循环里的不可修改的静态变量。
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"
循环一个类型化的数组(TypedArray):
let iterable = new Uint8Array([0x00, 0xff]);
for (let value of iterable) {
console.log(value);
}
// 0
// 255
循环一个Map:
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]
循环一个 Set:
let iterable = new Set([1, 1, 2, 2, 3, 3]);
for (let value of iterable) {
console.log(value);
}
// 1
// 2
// 3
循环一个 DOM 集合
循环一个 DOM 集合,比如 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");
}
循环一个拥有可枚举属性的对象
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;
}
}
来源:https://segmentfault.com/a/1190000017573641
javascript遍历方法总结的更多相关文章
- JavaScript 数组遍历方法的对比
JavaScript 发展至今已经发展出多种数组的循环遍历的方法,不同的遍历方法运行起来那个比较快,不同循环方法使用在那些场景,下面将进行比较: 各种数组遍历的方法 for 语句 ,,,] , len ...
- javascript数组常用的遍历方法
本篇文章给大家带来的内容是关于javascript数组常用的遍历方法(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 前言 本文主要介绍数组常见遍历方法:forEach.m ...
- JavaScript 中的12种循环遍历方法
原文:JavaScript 中的12种循环遍历方法 题目:请介绍 JavaScript 中有哪些循环和遍历的方法,说说它们的应用场景和优缺点? 1.for 循环 let arr = [1,2,3];f ...
- JavaScript中,数组和对象的遍历方法总结
循环遍历是写程序很频繁的操作,JavaScript 提供了很多方法来实现. 这篇文章将分别总结数组和对象的遍历方法,新手可以通过本文串联起学过的知识. 数组遍历 方法一:for 循环 for 循环是使 ...
- JavaScript、jQuery、fish的遍历方法(each、forEach)总结
起因 在工作中,需要在遍历的dom中找到第一个并做下操作然后退出遍历,我首先想到了用each方法,但由于无论是公用的jQuery组件还是公司的fish组件.我都忘记了怎么去退出遍历,所以就有了这篇帖子 ...
- JavaScript遍历对象方法总结
前言 本篇内容将按照下图展开: 遍历Object Object最常见的遍历方法方法就是使用for...in...,但其有一定的局限性,比如只能遍历可枚举属性.虽然Object无法直接使用for循环和f ...
- Jquery中each的三种遍历方法
Jquery中each的三种遍历方法 $.post("urladdr", { "data" : "data" }, function(dat ...
- JavaScript遍历对象-总结一
原生JavaScript 遍历 1.for 循环遍历 let array1 = ['a','b','c']; for (let i = 0;i < array1.length;i++){ con ...
- javaScript遍历对象、数组总结(转载)
javaScript遍历对象.数组总结 转载来源 https://www.cnblogs.com/chenyablog/p/6477866.html 在日常工作过程中,我们对于javaScript遍 ...
随机推荐
- linux 编译安装php7
1.下载php7安装包: php7 2.解压 .tar.gzcd php-7.1.5 3.可能需要的扩展 yum install libmcrypt libmcrypt-devel mcrypt mh ...
- Qmake 配置自定义编译过程
Qmake 配置自定义编译过程 需求:动态更换资源文件 在 Windows10 下编写 Qt 项目时,有这样的需求: 程序用到的资源文件可以动态更换而不需要重新编译整个项目 解决方案 0.1 将所有的 ...
- C# 压缩 解压 复制文件夹,文件的操作
命名空间:namespace System.IO.Compression 压缩: //目标文件夹 string fileDirPath = "/Downloads/试题" + us ...
- MSSql中profiler工具介绍,
第一次使用profiler感觉真的是很方便. 他的作用可能有很多,但是我只是简单其中一点,就是查看某一时刻数据库执行了哪些操作,执行了哪些语句,执行语句所花费的时间.都可以很方便的查到,这对于我们优化 ...
- maven课程 项目管理利器-maven 3-2 maven自动建立目录骨架
使用cmd创建maven目录的两种方式: 使用archetype插件 1 按照提示进行选择 步骤: a 进入指定目录 b mvn archetype:generate --创建项目目录 c ente ...
- jquery_lazyload插件
延迟加载图片的 jQuery 插件 http://www.neoease.com/lazy-load-jquery-plugin-delay-load-image/
- SpringMVC ------JstlView
摘要: Spring为展现层提供的基于MVC设计理念的优秀的Web框架,是目前最主流的MVC框架之一 .Spring3.0后全面超越Struts,成为最优秀的MVC框架 .SpringMVC通过一套M ...
- java ——String , StringBuffer, StringBuilder类
一.String类概述 1.String对象一旦创建就不能改变. 2.字符串常量池. 字符串常量池的特点:池中有则直接使用,池中没有则创建新的字符串常量. 例1: “==” 比较两个对象是否引用同一 ...
- MySQL数据库实验五:数据更新
实验五 数据更新 一.实验目的 掌握数据更新操作的用法. 二.实验环境 三.实验示例 1.往基本表SC中插入元组. ① INSERT INTO S(S#,SNAME,AGE,SEX) VA ...
- 【LOJ115】无源汇有上下界可行流(模板题)
点此看题面 大致题意: 给你每条边的流量上下界,让你判断是否存在可行流.若有,则还需输出一个合法方案. 大致思路 首先,每条边既然有一个流量下界\(lower\),我们就强制它初始流量为\(lower ...