【知识整理】javascript基础语法总结(5)——数组
来源:互联网 发布:js倒计时跳转页面代码 编辑:程序博客网 时间:2024/06/07 00:45
一.数组:连续保存多个数据的引用类型的对象
1.数组的分类:
(1)关联数组:可自定义下标的数组(hash算的是字符串的code)
(2)索引数组:自动分配下标的数组
二.索引数组
3.使用数组中每个元素:
(1)语法:数组名[i];//i表示该元素在数组中的索引/下标
(2)数组越界:越界都不会报错,在取值的时候会返回undefined,赋值时候会在指定位置添加新元素并自动修改length属性。下标不连续的叫稀疏数组。
(3)访问数组最后一个元素:数组名[数组名.lenth-1];
4.获得数组元素的个数:
(1)语法:数组名.length;(永远等于最大一个下标+1)
5.数组的取/赋值:
(1)赋值:数组名[元素索引值] = 值;
(2)取值:数组名[元素索引值];
6.数组的遍历:
1.优点:快速精确查找!不需要遍历!和数据量无关!相当于把下标名字符串给Hash算法,很快查找到。
2.Hash算法:内存中的一个小程序,专门接收一个字符串,并计算出一个尽量不重复的编号,相同的字符串计算出的号一定相同。不同的字符串计算的号一般不同。添加元素时候
3.创建:
(1)先创建空数组:
(3)数组名.length属性失效,结果永远为0
4.使用:
(1)数组名[key];//key关键字不可重复
(2)所有数组如果访问不存在的key关键字位置,不会报错,会返回undefined
5.遍历:
(1)语法:
(3)只要遍历索引数组,选普通for循环,只要遍历关联数组,只能用for in循环
四.数组API:浏览器厂商已经实现的方法,开发人员直接调用,不需要了解具体实现。
1.将数组转化为字符串:
(1)
(1)
(3)concat不修改原数组,总是返回一个新数组
3.获取子数组:
(1)
4.删除/插入/替换数组元素:
(1)删除:
(1)数组名.reverse();//直接修改原数组
6.数组排序:
(1)数组名.sort();//默认一切都转为字符串,按unicode编号按升序排列,只有在排序字符串类型的元素时候用。
7.栈和队列:在js中其实都是数组,只不过使用了不同的方法模拟出栈和队列的效果。
(1)栈:在js中为一端封闭,只能从另一端进出的数组
(2)结尾入栈:①数组名.push(新值);②数组名[数组名.length]=新值;
(3)结尾出栈:var a = 数组名.pop(); //返回值为出栈的数组元素
(4)无论出入栈都不会影响已有元素的位置
(5)开头入栈:数组名.unshift(新值);
(6)开头出栈:var a = arr.shift(); //返回值为出栈的数组元素
(7)队列:在js中,队列为只能从结尾进入开头出的数组;
五.二维数组:数组的元素又引用了另一个子数组
1.使用:
(1)保存横行竖列的二维数据
(2)保存上下级关系的数据(公司有很多部门,部门有很多员工)
2.创建二维数组:
(1)创建一个空数组:var data=[];
(2)设置数组中每个元素再引用另一个数组;
(3)例:
(5)访问data数组中第1行第1列元素:
(7)例:生成一个4*4二维数组
1.数组的分类:
(1)关联数组:可自定义下标的数组(hash算的是字符串的code)
(2)索引数组:自动分配下标的数组
二.索引数组
1.创建数组
(1)创建空数组:
var 数组名=[];(2)创建数组同时,初始化数组:
var 数组名=[值1,值2,值3,...];(3)创建空数组:
var 数组名=new Array([n]);//n表示初始元素的个数,省略则创建空数组
(4)创建数组同时初始化数组元素:
var 数组名=new Array(值1,值2,...);2.内存中的数组:引用类型的对象,每个值相当于一个元素, 每个元素都有一个下标,下标从0开始,每次增1,到个数-1结束。
3.使用数组中每个元素:
(1)语法:数组名[i];//i表示该元素在数组中的索引/下标
(2)数组越界:越界都不会报错,在取值的时候会返回undefined,赋值时候会在指定位置添加新元素并自动修改length属性。下标不连续的叫稀疏数组。
(3)访问数组最后一个元素:数组名[数组名.lenth-1];
4.获得数组元素的个数:
(1)语法:数组名.length;(永远等于最大一个下标+1)
5.数组的取/赋值:
(1)赋值:数组名[元素索引值] = 值;
(2)取值:数组名[元素索引值];
6.数组的遍历:
(1)
for(var i=0;i<数组名.length;i++){ 当前元素:数组名[i] }三.关联数组:
1.优点:快速精确查找!不需要遍历!和数据量无关!相当于把下标名字符串给Hash算法,很快查找到。
2.Hash算法:内存中的一个小程序,专门接收一个字符串,并计算出一个尽量不重复的编号,相同的字符串计算出的号一定相同。不同的字符串计算的号一般不同。添加元素时候
3.创建:
(1)先创建空数组:
var arr=[];再向数组中添加元素:
arr[key]=value;(2)key必须是字符串,且不可重复
(3)数组名.length属性失效,结果永远为0
4.使用:
(1)数组名[key];//key关键字不可重复
(2)所有数组如果访问不存在的key关键字位置,不会报错,会返回undefined
5.遍历:
(1)语法:
for(var key in 关联数组名){//反复取出每个key放入变量key中,key中获取的仅是元素的下标名称 当前元素的值: 关联数组名[key]; //此处不加双引号,因为本来key就是字符串类型}(2)其实该方法也可以遍历索引数组,但无法控制开始和结束
(3)只要遍历索引数组,选普通for循环,只要遍历关联数组,只能用for in循环
四.数组API:浏览器厂商已经实现的方法,开发人员直接调用,不需要了解具体实现。
1.将数组转化为字符串:
(1)
var str=arr.toString(); //返回数组中元素的内容,用逗号分隔(2)
var str=arr.join("连接符");//可以自定义分隔连接符2.拼接数组:
(1)
var newArr=arr1.concat(arr2,值1,值2,......);(2)此例中arr1不发生改变。会自动打散参数中的数组,以单个元素形式拼接到新数组中。
(3)concat不修改原数组,总是返回一个新数组
3.获取子数组:
(1)
var subArr=arr.slice(start,end+1);//start:开始位置的索引值,end:结束为止的索引值(2)含头不含尾的原则,不包含结束的位置。
4.删除/插入/替换数组元素:
(1)删除:
var deleted=arr.splice(starti,n);//从starti位置开始,直接删除数组n个元素(2)插入:
arr.splice(starti,0,新值1,新值2,......);//在starti位置插入新值1,新值2,...,原starti位置及其之后的元素,被向后顺移(3)替换:
arr.splice(starti,n,新值1,新值2,......);//新元素的个数和n可以不相等,数组会自动调整元素的位置和长度5.颠倒数组中元素:
(1)数组名.reverse();//直接修改原数组
6.数组排序:
(1)数组名.sort();//默认一切都转为字符串,按unicode编号按升序排列,只有在排序字符串类型的元素时候用。
7.栈和队列:在js中其实都是数组,只不过使用了不同的方法模拟出栈和队列的效果。
(1)栈:在js中为一端封闭,只能从另一端进出的数组
(2)结尾入栈:①数组名.push(新值);②数组名[数组名.length]=新值;
(3)结尾出栈:var a = 数组名.pop(); //返回值为出栈的数组元素
(4)无论出入栈都不会影响已有元素的位置
(5)开头入栈:数组名.unshift(新值);
(6)开头出栈:var a = arr.shift(); //返回值为出栈的数组元素
(7)队列:在js中,队列为只能从结尾进入开头出的数组;
五.二维数组:数组的元素又引用了另一个子数组
1.使用:
(1)保存横行竖列的二维数据
(2)保存上下级关系的数据(公司有很多部门,部门有很多员工)
2.创建二维数组:
(1)创建一个空数组:var data=[];
(2)设置数组中每个元素再引用另一个数组;
(3)例:
var data = [];data[0] = [0,0,0,0];data[1] = [1,1,1,1];data[2] = [2,2,2,2];(4)访问二维数组元素:数组名[行下标(从0开始)][列下标(从0开始)]; 找不到返回undefined
(5)访问data数组中第1行第1列元素:
data[1][1]; //1(6)二维数组下标越界问题:行下标越界会报错,列下标越界不会报错,会显示undefined;
(7)例:生成一个4*4二维数组
var data = [ [0,0,0], [1,1,1], [2,2,2]];(8)二维数组遍历:外层循环控制行遍历,内层循环控制列遍历
for(var r=0;r<data.length;r++){for(var c=0;c<data[r].length;c++){ 当前元素:data[r][c] }}
1 0
- 【知识整理】javascript基础语法总结(5)——数组
- 【知识整理】javascript基础语法总结(5)——字符串API
- 【知识整理】javascript基础语法总结(1)——变量和数据类型
- 【知识整理】javascript基础语法总结(2)——数据类型转换和运算符
- 【知识整理】javascript基础语法总结(3)——函数
- 【知识整理】javascript基础语法总结(4)——条件和循环语句
- 【知识整理】javascript基础语法总结(6)——正则表达式
- 【知识整理】javascript基础语法总结(8)——Date
- 【知识整理】javascript基础语法总结(9)——错误处理
- JavaScript基础语法知识注意点整理
- JavaScript--基础语法整理
- 黑马程序员—基础-基础语法知识总结-2
- 【JavaScript】知识总结---基础
- java基础语法总结(数组)
- 数据库知识整理:基础语法 第一章
- 数据库知识整理:基础语法 第一章
- 前端重点知识整理(JavaScript)一:数组与字符串
- 语法——JavaScript知识小结02
- CentOS7下安装mysql5.6修改字符集为utf8并开放端口允许远程访问
- 如何在Linux环境上安装JAVA和配置JAVA_HOME
- Cocos2d-x游戏引擎开发[2]----工厂方法,统一接口 (以helloworld类为基础)
- centos7查看系统版本,查看机器位数x86-64
- 控制EditText不让输入中文(输入内容类型)
- 【知识整理】javascript基础语法总结(5)——数组
- 在CentOS 7/6.5/6.4 中安装Java JDK 8(转载)
- linux centos中添加删除修改环境变量,设置java环境变量
- CentOS7使用firewalld打开关闭防火墙与端口(转载)
- spring boot 部署为jar
- 在PowerShell中使用curl(Invoke-WebRequest)
- 在centos7中添加一个新用户,并授权
- android分享支付经验分享
- 自定义的下拉刷新和上拉刷新