js二维数组_Javascript数组
数组的概念:引用类型的对象。
- 本质:内存中存储多个数据的空间,再取个名字。
- 数据结构:数据结构不同,擅长的操作不同。
- 数组特点:便于数据的查找与维护。
数组的创建:
- 方法1:var 数组名=【元素1,元素2,元素3......元素n】;
- 注意:可以创建空数组,建议创建同时赋值!
- 方式2:var 数组名=new Array();
数组的使用:
- 下标:每个元素都有一个对于的房间号,默认从0开始,逐一递增。
- 元素:其实就是数组中保存的一个个数据,可以是各种数据类型。
- 访问数组中已有的元素:数组中元素的使用与普通变量完全一样。
- 使用数组名【下标】:获取对应下标的数据。
- 使用数组名【下标】=新值:将新值替换原值。
数组的属性:
- .length属性:记录着数组中理论上元素的个数。实际保存的是数组中最后一个元素下标+1。length的值与实际元素的个数不一定相同。
- 注意:length不能脱离数组单独使用,自动维护不需要手动修改。
常见操作:
- 获取数组中最后一个元素:arr【arr.length-1】;
- 获取元素中倒数第n个元素:arr【arr.length-n】;
- 在数组的最后追究一个新元素:arr.【arr.length】=新元素;
- 修改数组的length属性,可以达到删除元素的目的!
- 删除数组中最后一个元素:arr.length--;
- 删除数组中最后n个元素:arr.length-=n;
- 关于数组的本质:引用类型的对象
- 输出方式:dir:输出数据的结构及其内容,而不是立刻输出,点击小三角后才在内存中输出正确的内容!
- 遍历:依次查找数组中每个元素,并执行相同操作!
for (var i=0;i<=arr.length;i++) {arr[i];}
数组的分类:
- 索引数组:下标为数字的数组
- 关联数组:下标自定义的值
- 创建数组:var arr=【】; //创建空数组;arr【“下标名”】;=值; 向空数组添加新元素,并自定义下标名。
- 使用数组:元素与普通数组一样,用法同普通数组。 取值:arr【下标名】 赋值:arr【下标名】=新值;
- 注意:关联数组的length属性失效,永远为0;
- 遍历:for in循环遍历关联数组!
for(var key in arr) {arr[key];}
注释:key:用于每次循环保存临时变量下标的变量;in:关键词;arr:需要遍历的数组的数组名
7.总结:数组的特点:便于数据的维护和查找!
8.关联数组 vs 索引数组:关联数组:查找更快,效率更高。原因:直接定位元素,查找速度不受元素个数影响;索引数组:相对较慢!原因:只能遍历查找,查找效率受元素个数,位置影响!
数组的API
- API:别人已经写好的,咱们直接使用的程序。
- 数组:存储多个数据,并且提供操作这些数据的API对象。
- 数组转为string
3.1 string(arr); arr.toString();
3.2 以上两个API都可以将索引数组转为字符串。------将数组中每个元素转为string然后之间用“,”拼接。
3.3 arr.join(“拼接符”);将数组中的每个元素按指定的拼接符拼接。注意:如果省略拼接符,默认用“,”拼接。
3.4 固定套路:
var str="<ANY>"+arr.join("</ANY><ANY>")+"</ANY>"elem.innerHTML=str;
4.数组的拼接与选取
4.1 拼接:将多个元素或数组拼接为一个新数组;
var new_arr=old_arr.concat(值,数组);
注意:concat();返回新数组,不修改原数组;如果需要拼接的是一个数组,将数组中的元素打散为一个个元素在拼接!
4.2 选取:选择数组中指定位置之间的元素,组成新数组返回。
var new_arr=old_arr.slice(starti,endi);
注意:不修改原数组
如果一个API两个参数都是下标,一般含头不含尾!
slice(starti,starti+n);//n表示选取元素的个数
支持负数参数:原理使用length属性。
arr.slice(starti,-n)<=>arr.slice(starti,arr.length-n);
并不是所有的API都支持负数参数,使用arr.length-n。
省略第二个参数:从起始位置一直选取到结尾。
var new_arr=arr.slice();
同时省略两个参数:复制数组;
var new_arr=arr.slice();
5.数组的增删改----splice
5.1增加:arr.splice(starti,0,值1,值2,值3......值n);
注意:在指定位置插入新值后,后续所有位置依次后移;如果插入的值是数组,不会打散,之间将数组插入指定位置。
5.2删除:
arr.splice(starti,n); //从starti位置开始删除n个元素
注意:直接修改原数组;支持负数参数;可以省略第二个参数----一直删到结尾;有返回值----被删除的元素组成的新数据。
5.3修改:
arr.splice(starti,n,值1,值2.....); 其实就是将原值删除,加入新值! //从starti位置开始,删除n个元素,在加入新值
注意:删除的元素不必与插入的元素个数保存一致!
6.排序:
6.1翻转----反向:
arr.reverse(); //将元素组中的元素按原顺序颠倒!
注意:直接修改原数组,不返回新值;不能修改内容的顺序,只是头尾颠倒!
6.2顺序排序: arr.sort(比较器函数); //将数组中的内容按大到小/按小到大的顺序排序 !
注意:默认不传参数,将数组中的数据从小到大排序;直接修改原数组,不返回新值!
原理:sort默认将数组中的元素转为字符串,再按照字符编码比较大小!
6.3比较器函数:挨个比较两个元素之间的大小。
格式:
function comp(a,b){return a-b;}
如果a>b,需要返回一个大于0的数!
如果a=b,需要返回一个等于0的数!
如果a<b,需要返回一个小于0的数!
7.栈:一端开口,一端封闭的数组结构!
7.1出栈,入栈:
出栈:从数组中删除一个元素。
入栈:向数组中添加一个元素。
7.2队列:两端开口的数据结构
8.二位数组:
8.1
eg:var arr=[[1,2,3,4],[3,4,5,6],[6,7,8,9]];
8.2二维数组的遍历:分为两步:1、先获取二维数组中的每个子数组;2、遍历每个子数组!
JavaScript的一些资料
- JS知识点汇总 -
- 走进JavaScript函数世界 -
js二维数组_Javascript数组相关推荐
- c语言sort函数排序二维数组,js 二维数组排序sort()函数
一.按数值排序 var arr = [[1, 2, 3], [7, 2, 3], [3, 2, 3]]; arr.sort(function(x, y){ return x[0] – y[0]; }) ...
- JS二维数组转树形数据
JS二维数组转树形数据 // 测试数据const arr = [{ id: '1', pid: '0', name: 'jack', age: 20 },{ id: '2', pid: '0', na ...
- php array_push 二维数组,arraypush js二维数组push的方法
用array_push给数组添加一个属性值 用array_push给数组添加一个属性值,如果是直接添加$a可以,但是如果要(1)如果你的数组是一维数组: 如: $arr = array('id'=&g ...
- 记录 Js 二维数组的排序
记录 Js 二维数组的排序 二维数组 let schedule=[[33, 38], [90, 92], [87, 88], [98, 100], [20, 32]] 冒泡排序(升序) var num ...
- [转载] pythonjson构建二维数组_python二维键值数组生成转json的例子
参考链接: python json 10: Datetime与json的相互转化 python二维键值数组生成转json的例子 今天出于需要,要将爬虫爬取的一些数据整理成二维数组,再编码成json字符 ...
- 二维树状数组 ----2021广东省赛 ----- K - Kera‘s line segment[区间转二维平面+树状数组维护前缀最小最大值]
题目链接 题目大意: 就是一个一维的数轴上面有一堆线段用一个三元组(l,r,val)(l,r,val)(l,r,val)表示. 现在我们有两个操作: 就是往数轴上面添加线段 询问[L,R][L,R][ ...
- szu 寒训第二天 树状数组 二维树状数组详解,以及树状数组扩展应用【求逆序对,以及动态第k小数】
树状数组(Binary Index Tree) 树状数组可以解决可以转化为前缀和问题的问题 这是一类用以解决动态前缀和的问题 (有点像线段树简版) 1.对于 a1 + a2 + a3 + - + an ...
- linux c语言 malloc动态分配指针,C语言malloc函数为一维,二维,三维数组分配空间...
c语言允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放,这些数据存储在堆区.可以根据需要,向系统申请 ...
- 【二维树状数组】See you~
https://www.bnuoj.com/v3/contest_show.php?cid=9148#problem/F [题意] 给定一个矩阵,每个格子的初始值为1.现在可以对矩阵有四种操作: A ...
- POJ_1195 Mobile phones 【二维树状数组】
题目链接:http://poj.org/problem?id=1195 纯纯的二维树状数组,不解释,仅仅须要注意一点,由于题目中的数组从0開始计算,所以维护的时候须要加1.由于树状数组的下标是不能为1 ...
最新文章
- 算法提高---概率计算
- OKR和KPI有什么区别?一篇文章搞懂
- TestNG如何用命令行运行
- python网络爬虫教程-终于明了python网络爬虫从入门到实践
- mysql的grant权限
- 中国房地产行业调查分析与发展前景研究报告2022年版
- Sql Server 常用日期格式
- python time perf_Python Time 的学习笔记
- vue 得到枚举个数_Package - vue-enum
- Netty入门笔记-BIO编程
- linux命令大全(持续更新)
- XPath学习:轴(4)——ancestor
- mysql5.6 主从 延迟_MySQL5.6升级5.7时,出现主从延迟问题排查过程
- FTP文件服务搭建与同步传输
- java递归下降计算四则运算_用递归下降方法实现算术表达式解析器
- 现代控制理论(5)——线性定常系统的综合
- Flask Web——Jinjia2模板的使用
- 计算机打不开硬盘,电脑硬盘打不开的原因 如何解决电脑硬盘问题
- svg 树状图_树状图(关系图)
- oracle 索引 lob 迁移,Oracle Lob类型存储浅析( alter index lob索引 rebuild tablespace XX报错问题)...
热门文章
- mysql数据没有同步更新_解决MySQL的主从数据库没有同步的两种方法
- cudnn下载_记录新电脑安装Ubuntu18.04,CUDA, cuDNN全过程
- 汇编烧程序进单片机要什么软件_单片机编程语言及应用技巧解析
- 三星Note3水货/行货各版本区别 N900/N9002/N9005/N9006/N9008/N9009有什么不同
- android.os.binderproxy cannot be cast to,Android服务android.os.BinderProxy错误
- c php数据,C 数据类型
- Celex Update CodeForces - 1358C(打表找规律)
- codeforces 1038a(找最长的前k个字母出现相同次数的字符串)水题
- java什么是原生类_Java 基础 - 原生类型
- 使用高级程序设计语言实现集合的交并差运算