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 []