JS(JavaScript)
数组;
一.数组是什么;
是值得有序集合,每个元素都在数组里有唯一的位置,用数字表示,叫做索引数据;用字符串表示,叫关联数组。
数组无类型;数组元素可以是类型,字符串,数字值,布尔值等
数组动态的;向插入新元素,从数组中删除指定元素
二.一维数组;
1.定义数组;
- 字面量/直接量方式定义
var 数组名称 = [元素一, 元素二, ...] -
构造函数方式
var 数组名称 = new Array(元素一, 元素二, ...)
var 数组名称 = new Array(length)- length - number类型,表示数组的长度(存在元素的个数)
-
函数方式定义
var 数组名称 = Array(元素一, 元素二, ...)
var 数组名称 = Array(length)- length - number类型,表示数组的长度(存在元素的个数)
1.字面量/直接量方式定义
var 数组名称 = [元素一, 元素二, ...]
var arr1 = [];// 定义一个空数组
var arr2 = [100, '爱新觉罗', true, undefined];
var arr6 = [10];
console.log(arr6);
2.构造函数方式
var 数组名称 = new Array(元素一, 元素二, ...)
var 数组名称 = new Array(length)
* length - number类型,表示数组的长度(存在元素的个数)
var arr3 = new Array();// 定义一个空数组
var arr4 = new Array(100, '爱新觉罗', true, undefined);
console.log(arr4);
var arr5 = new Array(10);
console.log(arr5);
3.函数方式定义
var 数组名称 = Array(元素一, 元素二, ...)
var 数组名称 = Array(length)
* length - number类型,表示数组的长度(存在元素的个数)
var arr7 = Array();// 定义一个空数组
var arr8 = Array(100, '爱新觉罗', true, undefined);
var arr9 = Array(10);
console.log(arr9);
2.索引数组;
就是存储元素的位置并以数字值来表示,数字值从0开始,一般称为索引值
/*
索引数组 - 表示数组中元素的位置使用数字值来表示的
* 数字值表示元素的位置 -> 角标或下标
* 数组的长度与元素的个数是一致的
*/
var arr = [];// 定义一个空数组
arr[0] = '爱新觉罗';
arr[1] = true;
console.log(arr.length);
3.关联数组;
存储元素的位置使用字符串来表示
/*
关联数组 - 表示数组中元素的位置使用字符串来表示的
* 注意:关联数组的数组长度与元素的个数不一致
* 原因:JavaScript的官方不支持关联数组的
*/
var arr = [];// 定义一个空数组
arr['name'] = '张无忌';
arr['age'] = 19;
arr['job'] = '教主';
// 输出的结果:[ name: '张无忌', age: 19, job: '教主' ]
console.log(arr.length);
4.稀疏数组;
包含0开始的不连续索引的数组
var arr = [];
arr2[0] = '犬夜叉';
arr2[3] = 16;
arr2[5] = '半妖';
/*索引数组的位置允许不连续;没有定义元素的位置默认为空(undefined)
* 稀疏数组;数组的长度与元素的个数不一致的*/
console.log(arr.length);
var newArr = [];
for (var i=0; i<arr.length; i++) {
// 比较当前值是否等于 undefined
if (arr[i] !== undefined) {
newArr.push(arr[i]);
}
}
console.log(newArr);
5.数组的长度;
以length属性,用来表示指定数组的长度和个数
6.数组元素的读取;
用于存储和读取数据信息
var arr = ['爱新觉罗',100,null];
console.log(arr);
//调用数组名称,得到只是存储所有元素数值的集合
console.log(arr[0]);
//访问索引数组中的元素;数组名称[索引值]
console.log(arr[5]);
//如果访问了数组中未定义位置的冤死时;语法不报错,结果是 undefined
//索引数组中索引值最大为 arr.length;1
//JS(JavaScript)中关联数组定义,访问都没有问题
var arr1 = [];
arr1['name'] = '犬夜叉';
arr1['age'] = 16;
arr1['job'] = '半妖';
console.log(arr1['name']);
7.数组元素的修改;
可读取指定元素,并进行修改数组中指定元素值
var arr1 = [];
arr1[0] = '爱新觉罗';
arr1[1] = true;
var arr2 = [];
arr2['name'] = '犬夜叉';
arr2['age'] = 16;
arr2['job'] = '半妖';
arr1[0] = 100;
console.log(arr1);
arr2['name'] = '杀生丸';
console.log(arr2);
//通过数字索引值到对应元素的位置,再通过重新赋值操作进行修改
arr1[4] = '爱新觉罗';
console.log(arr1);
//如果索引值是新的,就是新增数组的元素操作
8.数组元素的删除;
使用delete关键字竞秀删除数组中指定的元素值
var arr1 = [];
arr1[0] = '爱新觉罗';
arr2[1] = true;
var arr2 = [];
arr2['name'] = '犬夜叉';
arr2['age'] = 16;
arr2['job'] = '半妖';
delete arr1[0];
console.log(arr1);
/*使用delete运算符进行删除数组元素
- 只是删除元素数据内容,而对应位置被保留;稀疏数组
*/
9.遍历数组元素;
通常使用循环语句获取数组的数据
var arr = ['爱新觉罗',100,true,undefined];
/*var i = 0;
while (i < arr.length){
console.log(arr[i]);
i++;
}
//while语句
var i = 0;
do {
console.log(arr[i]);
i++;
} while (i < arr.length);
//do...while语句*/
for (var i=0; i<arr.length; i++) {
console.log(arr[i]);
}
//for语句
10.for...in语句
可以用来遍历稀疏数组,循环每次一有效元素返回,不存在索引不会遍历到
// 关联数组的length属性为 0
var arr1 = [];
arr1['name'] = '犬夜叉';
arr1['age'] = 16;
arr1['job'] = '半妖';
/*for (var i=0; i<arr1.length; i++) {
console.log(arr1[i]);
}*/
// for..in语句可以循环遍历关联数组, for语句不行
for (var i in arr1) {
console.log(arr1[i]);
}
// 稀疏数组 - 数组的长度与元素的个数不一致
var arr2 = [];
arr2[0] = '犬夜叉';
arr2[3] = 16;
arr2[5] = '半妖';
/*for (var i=0; i<arr2.length; i++) {
console.log(arr2[i]);
}*/
// for..in语句循环遍历稀疏数组(直接得到有效元素值), for语句不行
for (var i in arr2) {
console.log(arr2[i]);
}
三.二维数组;
1.二维数组是什么;
可以嵌套,表示在一个数组可以以一个元素包裹在另一个数组里面
2.定义二维数组;
为规整和不规整的二维数组,是指外层数组元素内部数据元素的个数是一致还有不一样的
3.使用二维数组;
获取二维数组,中元素内容,使用练习需要连续2个索引值一个表示外层索引值一个内部索引值
var arr = [];// 定义一个空数组
arr[0] = [100,200,300];
arr[1] = [400,500,600];
arr[2] = [700,800,900];
// console.log(arr);
// 访问二维数组中的元素
var result = arr[0];
/*console.log(result[0]);
console.log(arr[0][0]);*/
// 循环遍历二维数组
for (var i=0; i<arr.length; i++) {
console.log(arr[i]);
for (var j=0; j<arr[i].length; j++) {
console.log(arr[i][j]);
}
}