十二、数组
程序=数据结构+算法
数组元素的访问:通过下标访问
var mArray = []
mArray[0] = 'lanmx'
var mArray = new Array()
mArray[0]='lanmx'
数组GET操作:获取数组元素
数组SET操作:修改数组元素
数组length属性:数组名.length:数组的长度
数组的遍历:用for循环,元素下标作循环变量
数组固定套路:
- 获取数组最后一个元素:arr[arr.length-1]
- 获取倒数第n个元素的位置:arr[arr.length-n]
- 数组缩容:减少arr.length的数值,会删除结尾的多余元素
关联数组的创建方式:
var bookInfo = [];
bookInfo['bookName'] = '西游记'
bookInfo['price'] = 34.6
关联数组的length属性值无法获取其中元素的数量,所以遍历关联数组只能用for…in循环
for(var key in hash){
//key只是元素的下标名
hash[key];//当前元素值
}
索引数组与关联数组的区别:
- 索引:遍历、受存储位置影响、受数组元素个数影响
- hash数组:不用遍历、与存储位置无关、和数组中元素无关。所以,如果希望快速查找元素,就用hash数组
十三、数组API函数
数组转字符串
- String(arr):将arr中每个元素转为字符串,用逗号分隔
- arr.join(“连接符”):将arr中每个元素转为字符串,用自定义的连接符分隔
- chars.join(""):无缝拼接,将字符组成单词
- arr.join("")=="":判断数组是空数组
- words.join(" "):将单词组成句子
拼接和选取
- 拼接:concat()拼接两个或更多的数组,并返回结果
- 选取:slice()返回现有数组的一个子数组
var subArr=arr.slice(starti.endu+1);
//选取arr中starti位置开始,到endi结束的所有元素组成新数组返回,原数组保持不变
- 强调:凡是两个参数都是下标的函数,都有一个特性:含头不含尾
var arr1 = [10,20,30,40,50];
var arr2 = arr1.slice(1,4);
//结果是20,30,40
- 一直选取到结尾,可省略第二个参数
- 如果选取的元素离结尾近:可用倒数下标
`arr.slice(arr.length-n,arr.length-m+1)`;
可简写为arr.slice(-n,-m+1);`
修改数组
- 删除:splice直接修改原数组
arr.splice(starti,n)
//删除arr中starti位置开始的n个元素不考虑含头不含尾
- 插入
arr.splice(starti,0,值1,值2,...);
//在arr中starti位置,插入新值1,值2,0的意思是删除0个元素。```
- 替换:其实就是删除旧的,插入新的
arr.splice(starti,n,值1,值2,...)
//先删除arr中starti位置的n个值,再在starti位置插入新值
颠倒数组
reverse()颠倒数组中元素的顺序
arr.reverse();
排序API
arr.sort():默认将所有元素转为字符串再排序
排序算法:冒泡、快速、插入排序
下一节:JavaScript第二课笔记
下一节:JavaScript第四课笔记