循环是所有语言最基础的语法,这篇文章将总结JavaScript的多种实现循环的方法,希望对大家能有一定的学习和帮助。
while循环
while 语句可以在某个条件表达式为真的前提下,循环执行指定的一段代码,直到那个表达式不为真时结束循环。
var i = 0;
while (i < 3) {
i++;
console.log(i);//输出1,2,3.
}
//当i=3的时候跳出,循环了3次
do...while循环
do...while循环至少迭代一次,当while的条件为false的时候跳出
var i = 0;
do {
i++;
console.log(i);//输出1
} while (i < 0);
这个例子说明了,即使在不满足while内条件的时候,do...while里也迭代循环了一次。
for循环
for(var i= 0;i<arr.length;i++){
console.log(i+'/'+arr[i]);
}
//for ([变量初始化];[条件];[变量递增或递减]) { //代码块 }
for是普通的循环遍历方式,便于理解 。循环的变量声明和初始化,条件查询和循环变量的递增或递减都可以在相同的行中完成。它增加了可读性,降低了出错的几率。
for...in循环
var obj = {a:1, b:2, c:3};
for (var o in obj) {
console.log(o + " = " + obj[o]);
}
//语法:variable在每次迭代时,将不同的属性名分配给变量。 object 被迭代枚举其属性的对象
for (variable in object) {...}
for...in主要用于遍历一个对象的可枚举属性,注意点:
1.用于遍历数组,结果不一定按次序访问元素 。2.遍历对象他会对原型上的元素进行遍,如果你只要考虑对象本身的属性,而不是它的原型,那么使用 getOwnPropertyNames() 或hasOwnProperty()来确定某属性是否是对象本身的属性。代码如下
for (var o in obj) {
if (obj.hasOwnProperty(o)) {
console.log(o + " = " + obj[o]);
}
}
for...of循环
for...of可用于“Array,Map,Set,String,TypedArray,arguments对象等”上创建一个迭代循环。这是ES6中新引入的一种循环类型。
let arr = [1, 2, 3];
for (let v of arr) {
++v;
console.log(v);//输出2 3 4
}
针对其他类型的循环这里就不一一介绍了。
foreach循环Firefox 和Chrome 的Array 类型都有forEach的函数。 主要IE是不没有foreach方法的,如果使用了会抛出异常: 对象不支持“forEach”属性或方法。 使用forEach遍历数组是非常简单的。因为不用担心循环变量、条件和其他任何东西,它会处理所有迭代的问题。
var arr=[];
arr.push(1);
arr.push(2);
arr.forEach(function(e){
console.log(e);
})
如果要实现,考虑到兼容IE的话, 我们需要给它手动添加这个原型方法。代码如下:
if (!Array.prototype.forEach) {
Array.prototype.forEach = function(callback, thisArg) {
var T, k;
if (this == null) {
throw new TypeError(" this is null or not defined");
}
var O = Object(this);
var len = O.length >>> 0;
if ({}.toString.call(callback) != "[object Function]") {
throw new TypeError(callback + " is not a function");
}
if (thisArg) {
T = thisArg;
}
k = 0;
while (k < len) {
var kValue;
if (k in O) {
kValue = O[k];
callback.call(T, kValue, k, O);
}
k++;
}
};
}
map循环
map数组的另一个原型方法,通过map方法将创建一个新的数组,该数组的返回值由一个给定的数组的函数执行生成。代码如下
var arr=[1, 2, 3].map(function(x) {
console.log(x);//输出1,2,3
return x*2;
});
console.log(arr);//输出[2,4,6]
注意的是:map()的方法以函数作为参数,函数内包括了3个参数,3个参数都是可以选填的。
currentValue在数组中处理的当前元素 ,index:数组中正在处理的当前元素的索引值 ,array:数组映射的调用
循环遍历是写程序很频繁的操作,JavaScript 提供了很多方法来实现。这篇文章将分别总结数组和对象的遍历方法,新手可以通过本文串联起学过的知识。
二叉树的顺序存储结构就是用一维数组存储二叉树中的各个结点,并且结点的存储位置能体现结点之间的逻辑关系。二叉树的遍历有三种方式,如下:
相同点:都是循环遍历数组中的每一项;每次执行匿名函数都支持三个参数,参数分别为item(当前每一项),index(索引值),arr(原数组)
查阅了 ECMA-262 3rd edition ,如下文 It is an unordered collection of properties 就说到 ES3 标准的对象不排序,插入是啥顺序,遍历就是啥顺序
在forEach中,不能使用 continue 和 break ,可以使用 return 或 return false 跳出循环,效果与 for 中 continue 一样。注意该方法无法一次结束所有循环。
数组遍历:for --使用变量将数组长度缓存起来,在数组较长时性能优化效果明显,forEach --ES5语法;对象遍历:for...in --以任意顺序遍历一个对象自有的、继承的、可枚举的
编程这么多年,要是每次写遍历代码时都用 for 循环,真心感觉对不起 JavaScript 语言~对象遍历为了便于对象遍历的测试,我在下面定义了一个测试对象 obj。
for in语句用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作);For循环可以将代码块执行指定的次数。forEach按照原始数组元素顺序依次处理元素.
项目开发中,不管是建立在哪个框架基础上,对数据的处理都是必须的,而处理数据离不开各种遍历循环。javascript中循环遍历有很多种方式,记录下几种常见的js循环遍历。
个人建议吧原生for循环,forEach循环,还有Juery的each熟悉就可以啦!如果你再开发者发现这几个循环不好用的话,那就来我这里找找看,这15种循环中,绝对有你有需要的
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!