JS之for循环

2020-04-13  本文已影响0人  黄金原野

JS的for循环主要包含如下几种:for(let i = 0; i < len; i++), for-in, for-of,for-each

至于第一种for循环,地球人都会,按下不表。难点在于for-infor-of, for-each直接有什么区别,看起来都差不多的样子。

一句话概述for-infor-offor-in遍历得到的是key值,适用于对象的遍历,for-of得到的是value值,适合数组的遍历。只要有 iterator 接口的数据结构,都可以使用 for-of循环,包括:Array, Map, Set, String, arguments对象, Nodelist对象

for-in

对象属性

获得的是属性值

var person ={
    name:"admin",
    age:"21",
    address:"shanghai"
};
for(var i in person){
    console.log(i)
}
// name, age, address
数组

获得的是对象的索引值

遍历的时候不要用这个!

var array =['admin','manager','db'];
for(var i in array){
    console.log(i)
}
// 0, 1, 2

当给数组的原型添加属性时,for in 会遍历到原型链上的属性

var array = ['admin','manager','db'];
Array.prototype.name = 'zhangsan';

for(var i in array){
    console.log(array[i])
}
// admin manager db zhangsan

for(var i in array){
    console.log(i)
}

这时候只要判断是不是本身所有的属性就行了

var array = ['admin','manager','db'];
Array.prototype.name = 'zhangsan';

for(var i in array){
    if(!array.hasOwnProperty(i)){
        continue
    }
    console.log(array[i])
}
// admin manager db

for-Each

数组

传入匿名的回调函数,匿名函数的参数为:当前项item,索引index(可省),当前数组array(可省)

array.forEach(callback(currentValue, index, array){
    //do something
})

array.forEach(function(element) {
    console.log(element)
})

for of

数组

for-of这个方法避开了for-in循环的所有缺陷

与forEach()不同的是,它可以正确响应break、continue和return语句

for( let i of arr){
    console.log(i);
}
map

map遍历与foreach类似,支持使用return语句,支持return返回值

var temp=arr.map(function(val,index){
  console.log(val);  
  return val*val           
})
console.log(temp); 

参考链接link

上一篇 下一篇

猜你喜欢

热点阅读