数组:内存中一块连续的存储单元,这些存储单元具有共同的名称、不同的索引(下标)
5种遍历:1.for循环;
任何数组都可以使用for循环进行遍历,使用频率最高
for (let i = 0; i < array.length; i++) {
循环体语句
}
注意:数组下标从0开始,所以计数器的初始值为0,条件为计数器<数组长度。
2.for ...in 主要用于遍历对象,数组/集合不太推荐使用,避免出现不必要的问题
for(index in 数组名){
循环体语句
}
index:表示的是数组元素的索引
注意:(1)index索引为字符串型数字,不能直接进行几何运算
(2)for...in遍历的是数组的索引(即键名)
3.for ...of 只遍历数组 ,不可遍历对象
for( value of 数组名){
循环体语句
}
value:表示数组元素
注意:它可以正确响应break,continue,return语句
4.forEach(); 用于遍历数组
数组名.forEach(function(value,index){
函数体语句
})
value:表示数组元素
index:数组元素的下标
数组元素的下标:数组元素在数组中的位置编号(从0开始到数组的长度减1)
注意:对于forEach方法除非使用try/catch,否则无法中途停止循环,break或者return都无法使循环中途停止。
5. map()实际是对数组的过滤。返回一个新的数组,原数组不变
let 新数组名 = 原数组名.map(function(item){ //item表示数组元素
函数体语句
})
注意:(1)map支持return;
(2)map() 不会对空数组进行检测;
(3)map() 不会改变原始数组;
(4)map() 返回一个新数组,数组中元素为原始数组元素调用函数处理后的值。
forEach()和map()区别:
a.forEach()和map()通常用来遍历数组元素
b.forEach()返回的是undefinded,用来遍历数组中的每一项,不影响原数组
c.map()返回一个包含已转换元素的新数组,支持return
for...of 和 for..in的区别:
a.for...in 既可以遍历对象也可以遍历数组,in中的k一般指的是下标
b.for...of 只可以遍历数组,不可遍历对象,of中的k表示的就是元素