我有一个这样的数组:
var d = new Array();
d[0] = new Array();
d[0]['item1'] = '123';
d[0]['item2'] = '456';
d[0]['item3'] = '789';
d[1] = new Array();
d[1]['item1'] = '123';
d[1]['item2'] = '456';
d[1]['item3'] = '789';
使用console.log(JSON.stringify(d));
我的控制台日志时"[[],[]]"
为什么JSON.stringify()
给出空结果?
这里显示jsFiddle显示我目前的状况
我读了this。答案是一个解决方案,但我的属性名称是可变的,你可以在jsFiddle中看到。有没有办法制作属性的名称变量?像这样(显然没有工作):
var s = 'attrName';
var object = {
s: '123'
}// The object should have an attribute named attrName
答案 0 :(得分:5)
答案 1 :(得分:3)
这种情况正在发生,因为您混淆了arrays
和objects.
虽然在JavaScript中,数组只是特殊对象,但它们的处理方式有所不同。
虽然这不是技术上为真,但假设数组只能使用0到2 ^ 53之间的整数键。
// Tested in the console.
var d = [];
d[0] ={};
d[0]['item1'] = '123';
d[0]['item2'] = '456';
d[0]['item3'] = '789';
d[1] = {};
d[1]['item1'] = '123';
d[1]['item2'] = '456';
d[1]['item3'] = '789';
alert(JSON.stringify(d));
会做你想做的事。
答案 2 :(得分:0)
与Jeremy J Starcher一起,你可以完全反对它:
var data = {
'0': {
'item1': '123'
},
'1': {
'item1': 'abc'
}
};
这会给你一个更好的结果,虽然技术上不是一个数组。 = /
答案 3 :(得分:0)