我有一个类似于数组的对象,但它有多种索引类型(数字和字符串)。例如:
var myObj = [];
myObj[0] = 'a';
myObj[1] = 'b';
myObj[2] = 'c';
myObj['x'] = 'y';
当我使用JSON.stringify()
对其进行字符串化,然后使用JSON.parse()
再次对其进行解析时,myObj['x'] = 'y';
位将丢失。我怎么能克服这个?
答案 0 :(得分:8)
如果你有多个键,它不再是一个数组。使用对象。
var myObj = {};
myObj[0] = 'a';
myObj[1] = 'b';
myObj[2] = 'c';
myObj.x = 'y';
如果您需要计算长度或执行其他类似数组的选项,则必须手动管理。
总是有最重要的toJSON
,但我会避免这种情况:
myObj.toJSON = function() {
var r = {};
for (var k in this)
if (this.hasOwnProperty(k))
r[k] = this[k];
return r;
};
答案 1 :(得分:3)
似乎这不是一个真正的数组,而是一种JavaScript对象更适合的哈希映射,因此请更改以下行:
var myObj = [];
对此:
var myObj = {};