博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js二维数组新认识
阅读量:7089 次
发布时间:2019-06-28

本文共 1023 字,大约阅读时间需要 3 分钟。

js的二维数组

之前轻视了js二维数组的问题,直到写笔试题的时候,才发现踩了不该踩的坑,所以今天做一下总结,以防再犯;

起因

起因是这样的,我想创建一个初值都为1的

4*4

二维数组,于是乎很直接进行了如下操作:

var d_arr = [];for(let i = 0;i < 4;i++){  for(let j = 0;j < 4;j++){    d_arr[i][j] = 1;  }}console.log(d_arr);复制代码

结果却一直报错

TypeError: Cannot set property '0' of undefined

经过

思索了一会儿,我又修改为:

var d_arr = [];var temp_arr = [];    for(let j = 0;j<4;j++){        temp_arr[j] = 0;    }    for(let i = 0;i<4;i++){        d_arr[i] = temp_arr;    }    console.log(d_arr);复制代码

不知道大家有没有看出来,我犯了一个很愚蠢的错误。。虽然console.log可以正常打印二维数组了,但是,每当我修改这个二维数组的值,比如我想修改[0][1]值为0,当我进行d_arr[0][1]=0;后,结果是:[ [ 0, 1, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 1, 0, 0 ] ] 可见,如果看成这是一个4*4的矩阵,第二列全被改成了1,其实这是因为,数组是引用类型的,我赋值的时候,是把同一个数组赋给了d_arr的每一个元素。。d_arr的每一维都指向的是同一个对象呢。。

结果

虽然上面的修改也可以得到正确结果,但总是看着不正规,上网搜索,发现真正的操作方法是我一直忽略的new Array()!!

var d_arr = new Array();for(let i = 0;i<4;i++){  d_arr[i] = new Array();  for(let j = 0;j<4;j++){    d_arr[i][j] = 0;  }}console.log(d_arr);复制代码

这样就是一个想要得到的d_arr啦!

ps:new Array还有一个用处,就是指定数组的长度:var arr = new Array(8);

转载地址:http://zafql.baihongyu.com/

你可能感兴趣的文章
IGMPv3
查看>>
ZeroMQ(java)之Router/Dealer模式
查看>>
Linux下的文件查找命令
查看>>
TCP/IP协议碎碎念
查看>>
django 将表数据通过API展示到页面上
查看>>
linux用户登录检测发送邮件提醒
查看>>
个人见解 web性能优化
查看>>
中断优先级和中断线程优先级
查看>>
TFS 安装使用GCC4.4版本
查看>>
svn与web 同步更新
查看>>
通用社区登陆组件技术分享(开源)下篇:OAuth 源码下载及原理解说
查看>>
Windows Phone 7 程序等待页面的处理
查看>>
java.io.IOException: Connection reset by peer
查看>>
linux下的精确wait
查看>>
MySQL常见命令 [转]
查看>>
【大前端之打通账号系统】passport应该如何落地?
查看>>
虚拟化技术总览
查看>>
飞天,进化!
查看>>
20.3. PHP_INI
查看>>
72.11. this is incompatible with sql_mode=only_full_group_by
查看>>