一、数组概念
数组是存放多个数据的集合
特点:
- 数组元素的类型可以任意 如: var arr = [1,2,true,null,function(){}]
- 数组的长度通过length属性访问,length属性可读可写(即可以通过length属性给数组添加元素)
- 访问数据时,数组索引可以越界(但是值为undefined)
- 数组的长度可以动态变化
二、数组定义(两种方式)
- 构造函数Array
var arr = new Array();
var arr = new Array();
arr[0] = 1;
arr[1] = 2;
console.log(arr);
输出结果:
注意: 如果Array构造函数传递的是数值,则会按照该数组创建包含给定项数的数组,即只定义数组长度,但是没有值
但是,此数组和 var arr = [];不一样,arr是空数组,长度为0
代码示例:
var arr1 = new Array(3);
console.log(arr1);
console.log(arr1.length);
var arr2 = [,,,];
console.log(arr2);
console.log(arr2.length);
输出结果:
- 数组字面量
var arr = [ ];
var test = [1,'hello world',true,null,undefined,function(){},{name:'hello'}]
console.log(test);
输出结果:
三、数组的访问
- 通过中括号访问数组元素
var arr = [1,2,3,4,5];
arr[索引]
正确的索引范围应该0~arr.length-1,如果超过了这个范围,可以访问,但是值是undefined
var arr = [1,2,3,4,5];
var result1 = arr[0];
var result2 = arr[-1];
var result3 = arr[5];
console.log(result1);
console.log(result2);
console.log(result3);
输出结果:
- 通过length属性访问数组长度
arr.length
1、length不是只读的,即可以动态的改变
2、可以使用length给数组移除项或添加新项
3、如果length设置为小于数组长度的项,会移除数组的项
var arr = [1,'hello world',true,null,undefined,function(){},{name:'hello'}];
console.log(arr.length);
// length小于数组原本的长度 ==> 移除项
arr.length = 3;
console.log(arr);
var arr1 = [1,2,3,4];
// length大于数组原本的长度 ==> 新增项,但是值是undefined
arr1.length = 5;
// 将数组的长度设置为5,但是原数组只有前四个有值,所以第五项为undefined
console.log(arr1);
console.log(arr1[5]);
输出结果: