js二维数组添加元素_js 二维数组

二维数组的本质:数组中的元素又是数组

var arr = [[1,2,4,6],[2,4,7,8],[8,9,10,11],[9,12,13,15]]//这就是一个二位数组<br>arr[2][3]; // 11 注意:表示第三列第4行所在的元素。角标从0开始 

5ca6c6084bbfab8558a3ebcaea1772bd.png

初始化

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;
       }
} 

ffabfe4ff3f5010e482f9e741812111a.png

c814d448984783f99f651b4a74e93c8d.png

98fd0d3da7d88368a7dac293e0841565.png
例题:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的二维数组和一个整数,判断数组中是否含有该整数

我们首先想到的是遍历每个元素

9462d8a2d37f6b1d3dcbe600707cc6b0.png

但是我们可以这样

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);

二维数组转为一维数组

135030efb0b8e44151ee3fc3493ba6b1.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值