在JavaScript中,是否可以在一行代码中定义和初始化多维数组?

15 浏览
0 Comments

在JavaScript中,是否可以在一行代码中定义和初始化多维数组?

抱歉如果这个问题太基础,但是我在JavaScript中定义一个大小为6x6x6x6的四维数组并初始化为全1的操作上遇到了困难。请问有什么最简单的方法可以实现这个需求吗?谢谢!

0
0 Comments

在JavaScript中,定义和初始化多维数组在一行代码中是否可能的问题,是由于JavaScript中的数组是"按引用传递"而不是"按值传递"引起的。这导致数组的每个维度都持有对同一个数组的多个引用,而不是对其副本的引用。为了解决这个问题,我实现了如下的解决方案(唯一的区别是我使用了第二个函数而不是修改Array的原型)。

var fillArray = function(val, dim) {
    var a = [];
    for (var i = 0; i < dim; i++) {
        if (Object.prototype.toString.call(val) === "[object Array]") {
            val = val.slice(0);
        }
        a.push(val);
    }
        return a;
};
var generateArray = function() {
    var dimensions = Array.prototype.slice.call(arguments),
        val = 0;
    for (var i = (dimensions.length - 1); i >= 0; i--) {
        val = fillArray(val, dimensions[i]);
    }
    return val;
};

0
0 Comments

在JavaScript中定义和初始化多维数组可以通过以下代码完成:

var array = [];
for(var i=0; i<6; i++) {
    for(var j=0; j<6; j++) {
        for(var k=0; k<6; k++) {
            for(var l=0; l<6; l++) {
                array[i][j][k][l]=1;
            }
        }
    }
}

以上代码通过嵌套循环创建了一个4维数组,并给每个元素赋值为1。

为了生成一个n维的AxBxCxDx...数组,可以使用以下代码(未经测试):

Array.prototype.fill = function(elem, n) {
    for(var i=0; i= 0; i--) {
        x = [].fill(x, dimensions[i]);
    }
    return x;
}

以上代码定义了一个fill方法和一个generateArray函数。fill方法用于填充数组,generateArray函数用于生成指定维度的数组。

例如,要生成一个2x3x4x5的矩阵,可以使用以下代码:

generateArray(2,3,4,5);

然而,mikez302的解决方案更好。不过,以上方法可以让您创建一个AxBxCxD的矩阵。

0
0 Comments

在JavaScript中定义和初始化多维数组一行代码是否可行?这个问题的出现是因为在JavaScript中定义和初始化多维数组的语法相对复杂,不够直观,需要使用循环来实现。下面介绍了两种解决方法。

第一种方法是使用字面量语法,但是这种方法非常冗长和繁琐。可以尝试以下代码:

var x = [1, 1, 1, 1, 1, 1];
for (var i = 1; i < 4; i++) {
    x = [x, x, x, x, x, x];
}

第二种方法是使用更简单的解决方案:

var x = 1;
for (var i = 0; i < 4; i++) {
    x = [x, x, x, x, x, x];
}

感谢!顺便说一句,这个问题并不是一个挑战,我需要这个方法来解决组合数学相关的问题,你解救了我的一天:)有趣的是,定义一个数组居然如此不直观...

0