首页 > 解决方案 > 多维数组构造问题

问题描述

我创建了一个包含roomsmatrixtemp[]5 个元素(键值)的数组(),它们存储为另一个数组(roomsmatrix)的元素。好吧,就像对象的集合一样。

我的代码:

case 'roomsform':
  var roomsmatrixtemp = [];
  var roomsmatrix = [];
  var roomchild = 0;
  if (document.getElementsByClassName("newroomarea").length > 0) {
    fdataname = document.getElementsByClassName("newroomlabel");
    fdatatext = document.getElementsByClassName("newroomnametext");
    //create matric with rooms fields ----- roomchild[0] is title
    for (roomchild = 0; roomchild < document.getElementsByClassName("newroomarea").length; roomchild++) {
      for (i = 0; i < 5; i++) {
        var name = fdataname[i + (roomchild * 5)].innerHTML; // 5 labels per room
        var text = fdatatext[i + (roomchild * 5)].innerHTML; // 5 fields per room
        roomsmatrixtemp[name] = text; // constact matrix for default room
      }
      roomsmatrix[roomchild] = roomsmatrixtemp; //add default room matrix to roomsmatrix -- roomsmatrix[x]= array for room x
    }
  }
  if (checknewform(formid)) { // check in form if room is declared
    var roomsmatrixtemp2 = [];
    for (j = 0; j < 5; j++) {
      roomform = document.getElementById("roomsform");
      roomfieldlabel = $("#roomsform .form-group label")[j];
      var name = roomfieldlabel.innerHTML;
      var text = finput[j].value; // 5 fields per room
      roomsmatrixtemp2[name] = text; // constact matrix for default room
    }
    roomsmatrix[roomchild] = roomsmatrixtemp2; //add default room matrix to roomsmatrix -- roomsmatrix[x]= array for room x}
    if (roomsmatrix.length < 1) {
      alert("No rooms declared");
    } // no rooms anywhere
    break;

一切正常但是......当我将数组(roomsmatrixtemp)与另一个数组(例如roomsmatrix[1])中的新元素一起存储时,第二个数组的所有元素都等于新添加的元素。

我的意思是roomsmatrix[0]=roomsmatrix[1]=roomsmatrixtemp,尽管在 的每个循环中roomchildroommatrixtemp都有不同的值。

标签: javascriptarrays

解决方案


推荐阅读