开发者社区> zhanginzaghi> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

JS编程建议——53:小心使用数组维度

简介: 53:小心使用数组维度
+关注继续查看

建议53:小心使用数组维度
在JavaScript中,数组在默认状态下是不会初始化的。如果使用[]运算符创建一个新数组,那么此数组将是空的。如果访问的是数组中不存在的元素,则得到的值将是undefined。因此,在JavaScript程序设计中应该时刻考虑这个问题:在尝试读取每个元素之前,都应该预先设置它的值。但是,如果在设计中假设每个元素都从一个已知的值开始(如0),那么就必须预定义这个数组。我们也可以为JavaScript自定义一个静态函数:
Array.dim = function(dimension, initial) {

var a = [], i;
for( i = 0; i < dimension; i += 1) {
    a[i] = initial;
}
return a;

};
借助这个工具函数,可以轻松地创建一个初始化数组。例如,创建一个包含100个0的数组:
var myArray = Array.dim(100, 0);
JavaScript没有多维数组,但是它支持元素为数组的数组。
var matrix = [

 [0, 1, 2],
 [3, 4, 5],
 [6, 7, 8]

];
matrix2 //7
为了自动化创建一个二维数组或一个元素为数组的数组,我们不妨这样做:
for( i = 0; i < n; i += 1) {

my_array[i] = [];

}
注意,Array.dim(n, [])在这里不能工作,如果使用它,每个元素都指向同一个数组的引用,那是非常糟糕的。
一个空矩阵的每个单元将拥有一个初始值undefined。如果希望它们有不同的初始值,必须明确地设置它们的值。因此,我们可以单独为Array定义一个矩阵数组定义函数。
Array.matrix = function(m, n, initial) {

var a, i, j, mat = [];
for( i = 0; i < m; i += 1) {
    a = [];
    for( j = 0; j < n; j += 1) {
        a[j] = initial;
    }
    mat[i] = a;
}
return mat;

};
下面就利用这个矩阵数组定义函数构建一个5×5的矩阵数组,且每个元素的初始值为0。
var myMatrix = Array.matrix(5, 5, 0);
document.writeln(myMatrix2); // 0

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
js两个数组对象中,获取不相同的值 非交集元素对象
js两个数组对象中,获取不相同的值 非交集元素对象
0 0
JS数组的交集与差集
JS数组的交集与差集
0 0
js判断数组中对象是否存在某个值
js判断数组中对象是否存在某个值
0 0
js数组与字符串的相互转换,排除某个符号或文字
js数组与字符串的相互转换,排除某个符号或文字
0 0
js常见的循环方式以及数组和json字符串之间的转化
针对对象来说 ,任何对象都继承了Object对象,或者其它对象,继承的类的属性是默认不可遍历的, for... in循环遍历的时候会跳过,但是这个属性是可以更改为可以遍历的,那么就会造成遍历到不属于自身的属性。
0 0
JS不能向WASM传递数组?
JS不能向WASM传递数组?
0 0
重温js——数组
push 是在数组的末尾添加新的数据,数据可以是多个,会依次添加到数组的末尾
0 0
js如何实现数组随机排序【附洗牌算法心得】
js如何实现数组随机排序【附洗牌算法心得】
0 0
+关注
zhanginzaghi
IT菜鸟
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Javascript中的函数
立即下载
Javascript异步编程
立即下载
JS零基础入门教程(上册)
立即下载