js------10种循环方法
let arr = [{a:1},{a:2},{a:3},{a:4},{a:5}];
// 1.while循环
let sum = 0;
let num = 1;
while(num <= 1){
if (num === 5) {
num++;
continue // containue必须写在++后面,否则会进入死循环,因为在while中continue之后,是执行条件判断
// break // 支持break
}
sum += num;
num++;
}
// 注:也可用于循环dom
// 2.do {} while()
let a = 0;
let b = 1;
do{
b += a;
a++;
// 支持continue/break
}while(a <= 100)
// 注:先执行do里面的代码块再判断条件,若满足,则继续执行代码块,否则终止循环,
// 3.for
for(let item =0;item<arr.length;item++){
if(item === 3){
// 支持break/continue;
}
}
// 4.for in
for(let item in arr){ // item为key
if(item === 3){
// 支持break/continue;
}
}
// 注:for in主要用于遍历对象属性
// 5.for of
for(let item of arr){ // item为value
if(item.a === 3){
item.a = 9 // 数组内变量为引用类型,遍历所得即为对应项的引用地址
// 支持break/continue;
}
}
// 注:只能用于遍历字符串/数组/类数组对象(NodeList)
// 6.forEach
arr.forEach(function(item, index, arr){
if(item.a === 2){
item.a = 8; //数组内变量为引用类型,遍历参数即为对应项的引用地址
// return //跳过本次循环,即return本次遍历函数
}
}, arr3); // arr3 为可选参数,函数体内可通过this访问
// 注: forEach无返回值,无法跳出循环,可采用将forEach放入try{},catch{},手动抛出异常的方式
// 7.filter(item, index, arr)
// 无法跳出循环,用于过滤数组成员,满足条件的成员组成一个新数组返回。它的参数是一个函数,所有数组成员依次执行该函数,返回结果为true的成员组成一个新数组返回。该方法不会改变原数组。
[1, 2, 3, 4, 5].filter(function (elem) {
return (elem > 3);
}) // [4, 5]
let array = [0, 1, 'a', false];
array.filter(Boolean) // [1, "a"]
// filter方法也可以接受第二个参数,用来绑定参数函数内部的this变量。
let obj = { MAX: 3 };
let myFilter = function (item) {
if (item > this.MAX) return true;
};
let arr2 = [2, 8, 3, 4, 1, 3, 2, 9];
arr2.filter(myFilter, obj) // [8, 4, 9]
// 8.some(),every()
// 这两个方法返回一个布尔值,表示判断数组成员是否符合某种条件。
// 它们接受一个函数作为参数,所有数组成员依次执行该函数。该函数接受三个参数:当前成员、当前位置和整个数组,然后返回一个布尔值。
// some方法是只要一个成员的返回值是true,则整个some方法的返回值就是true,否则返回false
// every方法则相反,所有成员的返回值都是true,整个every方法才返回true,否则返回false。
[1, 2, 3, 4, 5].every(function (elem, index, arr) {
return elem >= 3;
}) // false
// 9.reduce(),reduceRight()
// reduce方法和reduceRight方法依次处理数组的每个成员,最终累计为一个值。它们的差别是,reduce是从左到右处理(从第一个成员到最后一个成员),
// reduceRight则是从右到左(从最后一个成员到第一个成员),其他完全一样。
[1, 2, 3, 4].reduce(function (a, b, c, d) { //a:累计变量,b:当前变量 c, d为可选参数,分别表示当前位置和原数组
console.log(a, b); // 分别为:1,2 | 3,3 | 6,4
return a + b;
}, total) // total 为可选参数,表示初始累计值,最后结果为total + 数组累计值
// 10.map()
// 无法跳出循环,返回一个新数组,第一个参数为函数,第二个参数可选,用来绑定回调函数内部的this变量,将回调函数内部的this对象,指向第二个参数。
let arr3 = ['a', 'b', 'c'];
[1, 2].map(function (item, index, arr) {
return this[item];
}, arr3) // 返回['b', 'c']
js------10种循环方法的更多相关文章
- 2.32 js几种定位方法总结
2.32 js几种定位方法总结 前言本篇总结了几种js常用的定位元素方法,并用js点击按钮,对input输入框输入文本 一.以下总结了5种js定位的方法除了id是定位到的是单个element元素对象, ...
- Javascript/jQuery关于JSON或数组集合的几种循环方法
JavaScript遍历JSON或数组集合: /** * 根据json数据生成option树形控件 * 如果有children节点则自动生成树形数据 * @param {JSON} data * @p ...
- js自动轮播图片的两种循环方法(原创)
用5个div,布局从左到右5张图片,从左到右5个div分别指定ID为img1,img2,img3,img4,img5.(背景是relative,5个div是相对于背景absolute定位) 显示如下: ...
- API设计中性能提升的10种解决方法
api的设计涉及到的方面很多, 分类是一个基本的思考方式.如果可以形成一个系列性的文字,那就从性能开始吧. 就像任何性能一样,API 性能主要取决于如何响应不同类型的请求.例如:典型的电商场景,显示用 ...
- jquery.autocomplete.js 两种实现方法
<script type="text/javascript"> var v = 1; var stockInfoJson = [ { "name": ...
- js 几种排序方法
1.冒泡排序 var arr = [9, 7, 5, 3, 1]; for (var i = 0; i < arr.length - 1; i++) { for (var j = 0; j &l ...
- js几种加密方法
1.base64加密 它的github地址:https://github.com/dankogai/js-base64 <!DOCTYPE HTML> <html> <h ...
- Javascript关于JSON集合的几种循环方法
/** * 根据json数据生成option树形控件 * 如果有children节点则自动生成树形数据 * @param {JSON} data * @param {int} n 节点深度 * @pa ...
- java中的循环方法(附带本人遇到的坑)
java循环结构 顺序结构的程序语句只能 被执行一次.如果你要同样的操作执行多次,就需要使用循环结构. java中有三种主要的循环结构: 1.while 循环 2.do...while 循环 3.fo ...
随机推荐
- javascript常见内存泄露
一.全局变量引起的内存泄漏 function func(){ lmw = 123456 //lmw是全局变量,不会被释放 } 二.闭包引起的内存泄漏 function func(){ var lmw ...
- Ubuntu Apache 不同端口监听不同站点
在/etc/apache2/apache2.conf 中,把项目根目录设置成默认的/var/www 不要设置在某个站点的路径下(我就是配置第一个站点时改了这里才会配置第二个站点时好久弄不出来) 在 / ...
- LVS、Nginx 及 HAProxy 工作原理
当前大多数的互联网系统都使用了服务器集群技术,集群是将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是 Web 应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器 ...
- .NET 4.0中的泛型逆变和协变
转载自:http://www.cnblogs.com/Ninputer/archive/2008/11/22/generic_covariant.html:自己加了一些理解 随Visual Studi ...
- Reading | 《Linux就该这么学》
目录 一.前言 1.Linux概念 2.RPM(红帽软件包管理器) 3.Yum软件仓库 二.常用Linux命令 1.Shell 2.命令基本格式和man命令 3.常用系统工作命令 echo命令 dat ...
- Windows系统编程之异步I/O和完成端口
Windows系统编程之异步I/O和完成端口[作者]北极星2003[来源]看雪技术论坛(bbs.pediy.com) [时间]2006年7月1日 一. 同步I/O和异步I/O 在介绍这部分内容之前先 ...
- 通过linux核映射驱动访问GPIO
1. HPS GPIO原理 1.功能方块图 linux内核是通过Linux内核memory-mapped device驱动访问GPIO控制器的寄存器而控制HPS端用户的LED和KEY的.memory- ...
- 开发微信小程序——古龙小说阅读器
概述 由于面试的关系接触了一下微信小程序,花了2晚上开发了一个带书签功能的古龙小说阅读器,并且已经提交审核等待发布.这篇博文记录了我的开发过程和对微信小程序的看法,供以后开发时参考,相信对其他人也有用 ...
- linux下的shell脚本的使用
什么是shell? Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户.这种对话方式可是交互 ...
- .NET手记-Autofac入门Getting Started
内容主要翻译自官方文档,原文请看:http://autofac.readthedocs.org/en/latest/getting-started/index.html#application-sta ...