数组
数组的概念
- 数组是可以将一组相关的数据一起存放,并且提供了一些方便访问以及获取的方式
- 数组的本质是一组数据的集合,里面的每个成员数据称为元素,一个数组里面可以存放任意多个以及任意类型的数据(一个JS数组中的元素类型可以不相同)
数组的创建
- 使用关键字new创建
- 直接使用[]进行创建
var arr=["张三","男",23];
console.log(arr);
数组的创建方式1里面new后面跟的是Array,添加数组元素可以使用数组索引的方式进行添加。而且使用[]这种方式创建数组的话可以直接将元素填写在[]中。
可以发现在js数组中每个元素的数据类型可以不一样
数组中的元素与元素之间通过逗号分隔
数组的元素操作
索引:数组中的一个表示元素位置的特殊序列号
可以通过“数组名[索引]”来获取某个元素,索引从0开始往后数,只能取正数
在对数组元素的访问、设置、修改都需要使用索引来完成。
var arr=["张三","男",23];
alert(arr[2]);
注意:如果访问数组时,使用的索引超出元素的索引对应范围,没有办法得到对应的数据因此返回的结果是undefined
不管数组中的元素发生怎样的改变,但是数组索引总是从0开始连续的
遍历数组
遍历:将数组的所有元素从头到尾依次访问一遍。类似于点名,绝不允许访问到同一个元素
因为数组的元素的索引是不会重复的,而且数组的索引是必然连续的,因此可以使用for循环语法对数组进行遍历。
如果要遍历数组,则需要明确数组中的元素个数。使用数组的属性length来获取数组的长度
“数组名.length”可以获取到数组的长度
注意:
- 数组的长度指的是数组的元素个数,和数组的索引没有任何关系
- 当数组中的元素个数发生改变时,length的值会跟着改变
- 数组的length属性可以被修改,如果length的值比原始数组的元素个数大,则使用空元素进行填充。如果length的值比原始数组的元素个数小,则将多余的元素从最后一个删掉,而且是不可恢复的删掉
添加新元素
数组中的元素添加方式
-
使用索引的方式进行添加元素
var arr=["a","c","b","d"]; arr[arr.length]="e"; console.log(arr);
使用索引添加数组,添加的元素索引值必须是原数组的长度
如果使用的索引小于数组的长度,那就是修改元素了
如果使用的索引超出数组的长度,那么中间多出来的元素位置使用空元素占着
-
使用push()函数进行添加
var arr=["a","c","b","d"]; arr.push("e"); console.log(arr);
排序算法
排序:将数据按照指定的规律进行重新排列,正序排列(从小到大)
冒泡排序:N个数字来排序,两两比较小靠前,外层循环N-1,内层循环N-i-1
window.onload=function(){
var arr=[18,9,21,47,15,23,11];
// 外层循环控制的是比较的轮数
for(var i=0;i<arr.length-1;i++){
// 内层循环是每一轮的两两比较
for(var j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
console.log(arr);
}
排序算法的稳定性:例如一组数进行排序[18,12,5,8,18,5,12],这组数里面有一些重复的元素出现,对于这种现象,一般两个相同的数在排序比较时,它们两个数比较完不会更换位置,原数组中相同的数在排序比较完之后不会更改先后顺序