数组:在内存中一块连续的存储单元,这些存储单元具有共同的名称、不同的索引(下标)
一、一维数组
1. 数组的声明:var arr = [ ] ; // 数组名为 arr
(1)使用数组字面量:[ ]
使用Array 对象来声明数组; // var arr = new Array( )
var arr = new Array( 4 ) ; / / 表示 数组长度为 4 , 数组单元 为空
2. 数组的属性:length 数组的(长度),数组对象中的元素个数;
3. 数组元素索引:从0开始到数组的单元个数减1 // arr [ i ]
4. 数组元素的访问 :数组名 [索引]
5. 数组的5种遍历:
(1) for 循环遍历 :
for ( let i ; 条件 ; 迭代) { / / i 表示 元素的个数
}
(2)for...in遍历 :
for ( index in 数组名) { / / index 表示 数组元素的索引
循环体语句
}
(3)for...of遍历:
for (value of 数组名) { / / value表示 数组元素的值
语句
}
(4)forEach遍历:
数组名.forEach (function (value,index) ) {
函数题语句
}
(5)使用map函数遍历数组:实际是对数组的过滤。
返回一个新的数组,原数组不变
let 新数组名 = 原数组名.map( function (item) { //item表示数组元素
函数体语句
/ / return item; / / 返回新数组的元素
})
forEach 和 map 的区别
相同点:
-
都是循环遍历数组中的每一项
-
每次执行匿名函数都支持三个参数,参数分别为item(当前每一项),index(索引值),arr(原数组)
-
匿名函数中的this都是指向window
-
只能遍历数组
不同点:
-
map( )会分配内存空间存储新数组并返回,map()返回新的数组。
-
forEach() 允许callback更改原始数组的元素。forEach()不会返回数据。
二、 二维数组
1. 二维数组:数组中的每个元素都有两个下标(由行和列组成的数组)
(1) 定义
a.字面量 声明 [ ]
b.Arrary 对象
var arr = new Array(
new Array(1, 2, 3),
new Array(5, 6, 7),
new Array(8, 9, 10)
)
(2)二维数组访问
数组名[ 索引1] [索引2 ]
var arr = new Array(
new Array(1, 2, 3),
new Array(5, 6, 7),
new Array(8, 9, 10)
)
// 字符串用来接收输出值
var str = "";
// i表示数组的行数
for (let i = 0; i < arr.length; i++) {
// j表示数组的列数
for (let j = 0; j < arr[i].length; j++) {
str += arr[i][j] + "\t";
}
str += "\n";
}
console.log(str);