js中循环总结,多种循环遍历的实现介绍(while,for,map,foreach等)
循环是所有语言最基础的语法,这篇文章将总结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:数组映射的调用
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!