欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js 数组指定初始值

程序员文章站 2022-07-16 17:33:38
...

javascript的数组通常不会预置值。如果你用[]得到一个新数组,它将是空的。如果你访问一个不存在的元素,得到的值则是undefined。如果你知道这个问题,或者你在尝试获取每个元素之前都很有预见性地设置它的值,那就万事大吉了。但是,如果你实现的方法是假设每个元素都从一个已知的值开始(例如0),那么你必须自己准备好这个数组。javascript应该提供一些类似Array.dim这样的方法来做这件事情,但我们可以很容易纠正这个疏忽:

Array.dim = function(dimension, initial){
    var a = [],i;
    for(i = 0;i < dimension;i += 1){
        a[i] = initial;
    }
    return a;
};
//创建一个包含10个0的数组
var myArray = Array.dim(10,0);
javascript没有多维数组,但就像大多数类C语言一样,它支持元素为数组的数组:
var matrix = [
    [0,1,2],
    [3,4,5],
    [6,7,8]
];
matrix[2][1]    //7
为了创建一个二维数组或者说是数组的数组,你必须自己去创建那个第二维的数组:
for(i = 0;i < n;i += 1){
    my_array[i] = [];
}
//注意:Array.dim(n, []) 在这里不能工作
//如果使用它,每个元素都指向同一个数组的引用,那后果不堪设想。
一个空的矩阵的每个单元会拥有一个初始值undefined。如果你希望它们有不同的初始值,你必须明确地设置它们。同样地,javascript应该对矩阵提供更好的支持。好在我们也可以补上它:
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;
}
//构造一个用0填充的4*4矩阵
var myMatrix = Array.matrix(4,4,0);
myMatrix[3][3]      //0
//用来构造一个单位矩阵的方法:
Array.identity = function(n){
    var i,mat = Array.matrix(n,n,0);
    for(i = 0;i < n;i += 1){
        mat[i][i] = 1;
    }
    return mat;
};
myMatrix = Array.identity(4);
myMatrix[3][3]      //1
※摘抄自《JavaScript语言精粹(修订版)》
相关标签: javascript