【问题标题】:How to create Javascript 2-d array like in PHP?如何像在 PHP 中一样创建 Javascript 二维数组?
【发布时间】:2015-01-13 16:27:42
【问题描述】:

我试图从我编写的以下 PHP 代码中复制 java 脚本中的二维数组生成,我觉得我有一些误解,因为我没有从我的 javascript 中得到预期的结果。 帮助我找出我做错了什么以及我的误解是什么。

PHP 代码

<?php

    $checkArray = array();
    for($m=0; $m<3; $m++){
        for($n=0; $n<4; $n++ )
        {
            $checkArray[$m][$n] = "Inside_ ".$m." is ".$n;
        }
    }   

    var_dump($checkArray);
?>

JAVASCRIPT 代码

<!DOCTYPE html>
<html lang="en">
<head>
<script>
        function ArrayFunction(){
            var checkArray = [];
            for(var m=0; m<3; m++){
               checkArray[m] = []; 
               for(var n=0; n<4; n++){
                checkArray[m][n] = "Inside " +m+ " is " + n ;
              }
            }
            for(var i = 0; i < checkArray.length; i++)
              console.log(checkArray[i]);
        }
</script>    
</head>
<body>
   The content of the document......
    <input id="clickMe" type="button" value="clickme" onclick="ArrayFunction();" />

</body>
</html>

@sifriday建议之后,我将数组初始化移到了内部循环之外,

更新问题: 但是为什么我们每次需要扩展维度时都要初始化它,不像php

【问题讨论】:

    标签: javascript php arrays multidimensional-array


    【解决方案1】:

    将内部数组的初始化移到 for 循环之外,应该可以解决它。否则你每次都在重置它。像这样:

        function ArrayFunction(){
            var checkArray = [];
            for(var m=0; m<3; m++){
    
              // Move this to here!
              checkArray[m] = []; 
    
              for(var n=0; n<4; n++){
    
                checkArray[m][n] = "Inside " +m+ " is " + n ;
              }
            }
            for(var i = 0; i < checkArray.length; i++)
              console.log(checkArray[i]);
        }
    

    【讨论】:

    • 补充:使用 Array.prototype.push 将项目添加到checkArray[m] 可能更好,如下所示:checkArray[m].push( "Inside " +m+ " is " + n);
    • @sifriday 哦,谢谢!那是我正在做的错误:) .. 你能给我推荐一些好的在线资源来研究 JavaScript 和最好的方法吗?
    • @sifriday 我根据您的建议更新了问题,并添加了一些新的查询。
    • 感谢 nmarsh,+1。 Stackup,您的新查询的答案很简单,PHP 的数组处理非常好,并且您在多维数组和关联数组方面都获得了很大的灵活性。在 JavaScript 中,该语言要求您分两个阶段进行。如果您尝试执行此操作并调用checkArray[m][n],那么最初 checkArray[m] 的值是undefined,因此此代码将失败。所以首先你需要定义它checkArray[m] = [] 然后你才能做到checkArray[m][n]
    猜你喜欢
    • 2011-04-11
    • 2017-08-13
    • 1970-01-01
    • 2014-12-17
    • 2013-05-06
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多