JS的二维数组
今天,记录一下JS的二位数组,并附上例题。
一.二维数组的本质:数组中的元素又是数组。
其实,我们都见过这样的二维数组,只不过没在意罢了,例如:
var arr = [[1,2,4,6],[2,4,7,8],[8,9,10,11],[9,12,13,15]] //这就是一个二位数组
arr[2][3]; // 11 注意:表示第三列第4行所在的元素。角标从0开始
二.下面介绍二维数组的初始化
记住了二维数组的本质,初始化也难不倒我们了。看一下实例
实例一:
var arr = [[1,2],['a','b']];
console.log(arr[1][0]); //a 第2列第1行所在的元素
实例二:
var arr = new Array(new Array(1,2),new Array("a","b"));
console.log(arr[1][0]);
实例三:二维数组的声明:
var arr = new Array(); //先声明一维
for(var i=0;i<5;i++){ //一维长度为5
arr[i]=new Array(i); //在声明二维
for(var j=0;j<5;j++){ //二维长度为5
arr[i][j]=i;
}
}
然后,遍历二维数组arr

注意:我们写入换行是写入的标签,因为document.write()是写入到HTML文档。所以写入换行不能用"\n"。
三、 例题:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的二维数组和一个整数,判断数组中是否含有该整数
var arr = [[1,2,4,6],[2,4,7,8],[8,9,10,11],[9,12,13,15]];
//规律:首先选取数组中右上角的数字,如果该数字=要查找的数字,查找过程结束;如果该数字>要查找的数字,剔除这个数字所在的列;
//如果该数字<要查找的数字,剔除这个数字所在的行。
function find(arr,num){
if(num==null || num==''){
console.log(num+" is null");
return;
}
while(arr.length){
var temp = arr[arr.length-1][0];
if(num == temp){
console.log(num+"is finded");
return temp;
}else if(temp>num){
arr.pop();
if(arr.length == 1){
console.log(num + " is not exists,"+num+" is less the minValue");
return;
}
}else{
for(var i=0;i<arr.length;i++){
if(arr[i].length ==1){
console.log(num + " is not exists,"+num+" is more than the maxValue");
return;
}
arr[i].shift();
}
}
}
}
var result = find(arr,18);
console.log(result);
JS的二维数组的更多相关文章
- C#/JS 获取二维数组组合
C#获取二维数组组合 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...
- 用js实现二维数组的旋转
我最近因为做了几个小游戏,用到了二维数组,其中有需求将这个二维数组正翻转 90°,-90°,180°. 本人是笨人,写下了存起来. 定义的基本二位数组渲染出来是这种效果. 现在想实现的结果是下面的效果 ...
- js 将二维数组转为一维数组
方法一 使用ES的最新语法:Array.prototype.flat(). flat([dept]),参数 dept 为数组的深度,默认为1,根据传入的深度将数组展开. 对于不确定深度的数组,可以传入 ...
- js 输出二维数组的最大值
function num(arr){ max=a[0][0]; for (var i = 0; i < a.length; i++) { for (var j = 0; j< a[i].l ...
- js输出二维数组最长的子数组
,,],[,,,],[,,,,]]; ].length; ; i < a.length; i++) { if (max<a[i].length) { max=a[i].length; va ...
- JS遍历二维数组
//求平均数 var pjs=[ ['小明',87], ['小红',81], ['小花',97], ['小天',76], ['小张',74], ['小小',94], ['小西',90], ['小武', ...
- js 如何生成二维数组
想了几种方法都不能很好的,用js定义二维数组.这种定义,指的是:定义按需确认数组大小. 网上看了下,都是用for循环创建,大小必须提前设定.不是我想要的.(感觉不能和php一样,真是麻烦!) 先贴出代 ...
- php 二维数组传递给 js 问题解决记录
需求: php从数据库中读取到二维数组.传递到js中 实现步骤: php:json_encode → json → js:eval 即在php中使用json_encode()将php的二维数 ...
- js二维数组与字符串
1. 二维数组:数组中的元素,又引用了另一个数组对象 何时使用:只要保存横行竖列的数据, 具有上下级包含关系的数据, 创建二维数组: 1. var arr=[]; col arr[0]=[" ...
随机推荐
- 【大数据系列】apache hive 官方文档翻译
GettingStarted 开始 Created by Confluence Administrator, last modified by Lefty Leverenz on Jun 15, 20 ...
- Post Office Protocol --- pop协议
https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol
- @components问题
场景:在引入组件的时候,希望解决"../components/page/member"这样的引入: 希望:像vue的项目中用@components/page/member引入组件 ...
- sencha touch 在安卓中横屏、竖屏切换 应用崩溃问题
答案来至于 Sencha Touch 交流 @周旭 这是由于横竖屏转换导致activity重跑onCreate方法导致的,有两种解决方案:1.横竖屏转换的时候不要重新跑onCreate方法,这个可以在 ...
- Installed .NET Framework 4.5 Ajax POST IIS hang
去年我已写过一篇关于安装.NET Framework 4.5后特定场景Ajax POST的挂起问题 => http://www.cnblogs.com/junchu25/archive/2012 ...
- C# 递归与非递归算法与数学公式
1.递归 递归:程序调用自身的编程技巧称为递归(recursion). 优点是:代码简洁,易于理解. 缺点是:运行效率较低. 递归思想:把问题分解成规模更小,但和原问题有着相同解法的问题. 1)下面是 ...
- 7.18 进程池方式的 socket
2018-7-18 22:05:28 笔记都做完了 睡觉睡觉!!!明天早起!发现python慢慢深入变得很强大,很好玩!!! 进程池版本的socket 更加优化了,比多进程版本的效率更高 seerv ...
- 被included或者被required的文件都来自哪里呢
过PHP,你可以使用不同函数帮助你重用代码.具体用到的函数取决于你打算重用的内容. 主函数如下: * include() and include_once() * require() and requ ...
- 分布式存储中HDFS与Ceph两者的区别是什么,各有什么优势?
过去两年,我的主要工作都在Hadoop这个技术栈中,而最近有幸接触到了Ceph.我觉得这是一件很幸运的事,让我有机会体验另一种大型分布式存储解决方案,可以对比出HDFS与Ceph这两种几乎完全不同的存 ...
- (面试)Hash表算法十道海量数据处理面试题
Hash表算法处理海量数据处理面试题 主要针对遇到的海量数据处理问题进行分析,参考互联网上的面试题及相关处理方法,归纳为三种问题 (1)数据量大,内存小情况处理方式(分而治之+Hash映射) (2)判 ...