数组
数组(Array)
数组指的是按次序排列的一组值,其中每一个值都有一个编号,这个编号被称之为索引值,从0开始0.1.2.3进行排列
数组通常用来存储一系列的值。
created(创建)
创建数组通常使用两种方式,一种事通过直接量进行创造,另一种是通过构造函数创造
demo:通过直接量的方式;
var test_arr = [10,20,30,40]
//通过直接量的形式创建了一个数组;
demo:通过构造函数的形式;
var test_arr = new Array();
console.log(test_arr);//[]
//也可以在使用构造函数创建的时候设置一个具体的值,列如;
var test = new Array(10);
//此处相当于创建了一个length属性值为10的空数组
console.log(test);//打印出来的是一个空的数组;
console.lo(test.length);//虽然创建的是空的数组,但是空数组里面的位置依旧存在。所以length的长度为10
var test_arr2 = new Array(10,20,30,40);
console.log(test_arr2);//输出来的数组为【10,20,30,40】
console.log(test_arr2.length);//输出来的结果为4
在以上的案例中我分别通过直接量与构建函数的方式创建了数组,两种方法其实都可以创建我们想要使用的数组,但是构建函数创建数组的方式无论是从效率还是创建速度来讲,远远不及直接量.
而且像webstorm这类IDE工具在使用构建函数创建数组的时候会把构建函数标出来,并报出有更简单的方法。而这个方法就是使用直接量进行创建。
所以在我们需要创建一个数组的时候除非没得选否则尽量使用直接量的形式,毕竟“懒,是推动世界进化的动力!”.
使用构建函数与直接量创建数组的区别.
当使用构建函数创建数组时;
- 创建函数
- 查询作用域链
- 创建作用域链
- 将数据写入
当使用直接量的时候,相当于直接将数据写入内存中,也就是直接作用在作用域链中,这种创建数组的方式是最快的。
在es5中有两条作用域链,一条是var也就是变量的作用域,一种是函数声明。
在js当中直接将数据存储在变量中速度是最快的,其次是通过变量声明,最后是通过函数调用获得的量。
1976.6 ES1中,直接量有四种:null、boolean、numeric、string
1998.8 ES2中,与ES1相同
1999.12 ES3中,直接量加入了Regular
2011.6 ES5.1 与上面相同
数组直接量
在es3和es5中,将数组和对象归于表达式一章里,称之为初始器。
在老一代程序员里面,被称为函数直接量。之前因为w3c的英文翻译到国内就莫名其妙翻译成了函数直接量和对象直接量。
现在官方已经修正了。
数组的使用
数组的类型
在js当中数组也是一种特殊的对象类型。
var arr = [10,20,30];
console.log(typeof arr)//输出的结果是object
如果想判断一个数组的类型可以通过instanceof来进行判断。
var arr = [];
console.log(arr instanceof Array);//输出的结果为ture。为什么为真?请参考强类型转换。
demo:增加数组内容。
var arr = [];
arr[0] = "张三丰";
console.log(arr)//["张三丰]
demo:直接创造一个带有内容的数组
var arr = [10,20,30];
console.log(arr)//【10,20,30】
demo:构建函数创建数组
var arr = new Array();
arr[0] = "名叫";
arr[1] = "阳顶天";
console.log(arr)//[“名叫”,“阳顶天”]
demo:构建函数创造一个带有内容的数组
var arr4 = new Array('张三','李四','王五');
console.log(arr4); // [ '张三', '李四', '王五' ]
demo:数组的查找:
var arr1 = ['张三','李四','王五'];
// 查找数组当中指定位置的元素
console.log(arr1);// 打印全部的数组元素
console.log(arr1[0]); // 根据索引值查找 张三
console.log(arr1[2]); // 王五
console.log(arr1[555])//输出undefined
一旦索引值超过最大范围,则为undefined。
demo:修改数组内容
var arr = [10,20,30,40]
arr[0] = "张三丰"
console.log(arr)//输出【“张三丰”,20,30,40】;
如果需要修改内容直接按照元素的索引值进行修改即可。
demo:delete删除数组操作
var arr = [10,20,30,];
delete arr[0];
console.lo(arr)//输出[1 enpty item,20,30]
delete删除的元素仅仅是删除的内容,原来所在的位置依旧存在,只是变味了空。
console.lo(arr[0])//输出undefined