Javascript关联数组不将子数组作为值

Javascript关联数组不将子数组作为值,javascript,jquery,arrays,json,associative-array,Javascript,Jquery,Arrays,Json,Associative Array,我有这个代码用于可排序布局管理。我正在尝试获取可排序的stop()之后每个div的位置。现在,我能够将数组中的所有内容都放在适当的位置,但是数组计数似乎是0,并且数据没有被发送到另一个页面 console.clear(); finalArr = []; $(".rowSortable").each(function(){ nowRow = $(this).attr('class').substr(4,5); finalArr[nowRow] = [

我有这个代码用于可排序布局管理。我正在尝试获取可排序的
stop()
之后每个div的位置。现在,我能够将数组中的所有内容都放在适当的位置,但是数组计数似乎是
0
,并且数据没有被发送到另一个页面

    console.clear();
    finalArr = [];
    $(".rowSortable").each(function(){
      nowRow = $(this).attr('class').substr(4,5);
      finalArr[nowRow] = [];
      $(this).find(".connectedSortable").each(function(){
        nowCol = $(this).attr('class');
        nowCol = nowCol.substr(0,nowCol.indexOf(" connectedSortable"));
        finalArr[nowRow][nowCol] = [];
        $(this).find(".sortable").each(function(){
          finalArr[nowRow][nowCol].push($(this).data("field"));
        });
      });
    });
    console.log(finalArr);
    console.log(JSON.stringify(finalArr));
对于
console.log(finalArr)

对于
console.log(JSON.stringify(finalArr))


我还尝试通过ajax将
finalArr
发送到一个PHP页面,它显示一个空数组正在发布到该页面

问题是您使用数组作为映射,数组不适合这样做。在JS中,数组是一种特殊类型的对象,它有自己的一组方法,所有内容都假定它由整数属性键和指定包含多少项的
length
属性组成

通过设置数组的非整数属性,其
length
属性不会更改,因此,数组的
length==0
。这就是
JSON.stringify()
方法所看到的,它看到数组的
length
为零,这就是为什么JSON中会有一个空数组

  • 普通对象更适合这种情况,因为它们的属性是任意的,
    JSON.stringify()
    可以正确地处理它。换句话说,您的
    finalArr
    属性应该是一个普通对象,因此将
    finalArr=[]
    更改为
    finalArr={}
  • 在每一行上,都有非整数属性的列,因此这里还需要一个普通对象,因此将
    finalArr[nowRow]=[]
    更改为
    finalArr[nowRow]={}
  • 然后在每一列中,您确实正确地使用了一个数组,因为您实际上是在使用它,所以
    finalArr[nowRow][nowCol]=[]
    就可以了
我希望这有助于解释和解决您的问题


另外,您应该在您的
finalArr
声明前填写
var
。当您省略它时,您实际上是在
窗口
对象上添加
finalArr
作为属性。这是一种不好的做法,可能会导致难以排除的错误。对于
nowRow
nowCol

的声明,Javascript没有关联数组,只有索引。
home:1094
[row_1: Array(0), row_2: Array(0)]
    row_1: Array(0)
        col-md-12: Array(1)
            0: "Dog"
            length: 1
            __proto__: Array(0)
        length: 0
        __proto__: Array(0)
    row_2: Array(0)
        col-md-5: Array(3)
            0: "Cat"
            1: "Tiger"
            2: "Rat"
            length: 3
            __proto__: Array(0)
        col-md-7 left-column: Array(2)
            0: "Lion"
            1: "elephant"
            length: 2
        __proto__: Array(0)
        length: 0
    __proto__: Array(0)
    length: 0
__proto__: Array(0)
home:1095 []