js 二维数组动态赋值怎么做

JavaScript036

js 二维数组动态赋值怎么做,第1张

 var arr=new Array()

  for (var ij = 0 ij <= 10 ij++) {

      arr[ij] = new Array()

      if (ij < 10) {

          var idfz1, cs

          cs = "0"

          idfz1 = cs + ij

      }

      if (ij >= 10) {

          idfz1 = ij

      }

      for (var j = 0 j <= 3 j++) {

          if (j < 10) {

              var idfz2, cs1

              cs1 = "0"

              idfz2 = cs1 + j

          }

          if (j >= 10) {

              idfz2 = j

          }

          var id1 = idfz1 + idfz2

          //alert("id1:" + id1)

          arr[ij][j] = id1

         

      }

  }

alert(JSON.stringify(arr))

答:不同语言的二维数组赋值可能略微有不同, C语言中二维数组的赋值如下所示。举例使用int arr[2][3],先定义一个2行3列的二维数组,存储元素为整型。

分行给数组赋值,每行都放在一个中括号里面。举例int arr[2][3]={{1,2,3},{4,5,6}} 按顺序对所有元素赋值,如int arr[2][3]={1,2,3,4,5,6},其与方法1得到的效果是一样的 对部分元素赋初值,举例int arr[2][3]

={{1},{2}},没有显式赋值的默认值为0,其结果与int arr[2][3]={{1,0,0},{2,0,0}}一致。

原因:

思路没有问题,但对一维和二维的使用上有些偏差,特别是push

var plist={"productName":pds[j].value,"rackRate":pds[j].value}//这句话没有问题,就是一个生成一个对象。

----------------------------------

products[i][j].push(plist)//这里就有问题了,因为你说的是二维,products[i][j]就代表二维里面的具体内容,内容在push,那就是内容还是数组,也就是3维了,更何况三维没有new的话,这里肯定报错。因此这里需要改成products[i][j]=plist或者products[i].push(plist)

----------------------------------

alert(products[i][j].productName)//这句话没有问题

修改:

根据上面其中一种方法修改后

<script>

var pds=[]

var products=[]

pds.push({"value":"1"})

pds.push({"value":"2"})

pds.push({"value":"3"})

for(var i=0i<1i++){

  products[i] = []//申明二维数组

  for(var j=0j<pds.lengthj++){

     var plist={"productName":pds[j].value,"rackRate":pds[j].value}

     products[i].push(plist)

  }

}

alert(products[0][0].productName)

</script>