【问题标题】:Create multidimensional array in for loop在for循环中创建多维数组
【发布时间】:2014-10-25 19:09:38
【问题描述】:

我想创建一个这样的多维数组:

array[0][1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
array[1][21,22,23,24,25,26,27....]
array[.][....]

如何在 Javascript 中做到这一点?

我试过这个:

var squares = new Array();
        for(var i = 1; i <= 8; i++)
        {
            for(var j = 1; j <= 20; j++)
            {
                squares.push(i, j);     
            }

        }

我怎样才能做到这一点?

【问题讨论】:

  • 已更新答案。

标签: javascript angularjs loops multidimensional-array


【解决方案1】:

你可以这样做:

var squares = new Array();
for(var i = 0; i <= 8; i++)
{
    squares[i] = new Array();
    for(var j = (i * 20) + 1; j <= 20 * i + 20; j++)
        if (squares[i] == null)
            squares[i] = j;
        else
            squares[i].push(j);
}

输出如下:

array[0][1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
array[1][21,22,23,24,25,26,27....]

【讨论】:

  • 我已经测试过了,我得到这个错误:错误:squares[i] is undefined
  • @user500468 更新了答案!
  • @user500468 立即查看! :)
  • @user500468 检查更新的答案。是我的错。对不起!
【解决方案2】:

您可以使用两个“for”循环来完成。在第一个循环中,您遍历主数组,并为每个元素添加来自第二个循环的元素。

var arrayLength = 10; // Main array length
var limit = 20; // Number of squares
var array = [];

for ( var i = 0; i < arrayLength; i++ )
{
    array[i] = []; // Create subArray

    for( var j = 1; j <= limit; j++ )
    {
        array[i].push(j);
    }
}

【讨论】:

  • 您可能想要添加某种解释,说明您的答案是什么/是什么,一些上下文。
【解决方案3】:

使用模操作数来限制内部数组的大小

var limit = 80
var inner_limit = 20
var square=[]
var inner =[]
for(var i=1;i<=limit;i++){
    inner.push(i)        
    if(i%inner_limit==0){
        square.push(inner)
        inner = []
    }

}

【讨论】:

  • 没有给出预期的输出! :(
  • 修复它,你能再试一次吗?
  • 好。现在工作......反正太复杂了! :)
  • @PraveenKumar:这个例子比你的更好。在您的示例中, array[1] 包含 11、12、13 等。
  • @user500468 我怎样才能让我的更好,因为这有点复杂。是的,这就是你想要的,对吧?哎呀,是这样吗,我马上修。。
【解决方案4】:
var array = []; // Main array
var numArrays = 10, // Number of sub-arrays
    numPerArray = 20; // Number of squares per sub-array

for(var i = 0; i < numArrays; i++){
    var subArray = [];
    // Number to start at
    var start = i * numPerArray;
    // Count up to start + numPerArray
    for(var j = start; j < start + numPerArray; j++){
        subArray.push(j);
    }
    // Add to main array
    array.push(subArray);
}

【讨论】:

    猜你喜欢
    • 2013-04-30
    • 1970-01-01
    • 2011-05-28
    • 2021-02-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    相关资源
    最近更新 更多