我有这个:
var a = {};
a[1] = 1;
a[4] = 4;
console.log(JSON.stringify(a));
然后我得到:
{"1":1,"4":4}
,但我想得到:
{1:1,4:4}
如何达到这个?换句话说,我想钥匙是真正的int。
调用json.stringify()方法时,它会创建有效的JSON字符串。有效JSON的规则之一是每个属性都应在"引号"中。
所以这就是为什么不可能使用json.stringify的结果。
如果您只想将这种对象转换为数组,例如usin usin usin。
function numerableObjectToArr(obj) {
var result = [];
var keys = Object.keys(obj);
keys.forEach(function(item){
result.push(obj[item]);
})
return result;
}
var a = {};
a[1] = 1;
a[4] = 4;
numerableObjectToArr(a); // returns [1, 4]
但是,以这种方式,您只会收到具有OBJ中现有属性值的数组。
但是,如果您的道具名称表示数组中的索引,并且您确定总会有数字作为道具名称 - 您可以改善此功能:
function numerableObjectToArr(obj) {
var result = [];
var keys = Object.keys(obj);
keys.forEach(function(item){
result[+item] = obj[item]; //we put index, then we put value to that place in array
})
return result;
}
var a = {};
a[1] = 1;
a[4] = 4;
numerableObjectToArr(a); // returns [undefined, 1, undefined, undefined, 4]
我不确定您是否可以执行自己的操作,因为键必须是字符串值。我建议为您的键配有字符串名称(即1 =一个,2 =两个等)。然后您可以尝试以下操作:
var a = {};
a.one = 1;
a.two = 2;
a.three = 3;
a.four = 4;
console.log(JSON.stringify(a));
我希望这会有所帮助。
var a = {};
a[1] = 1;
a[4] = 4;
alert(JSON.stringify(a).replace(/"([0-9]+)":/g, '$1:'));
但这是kludge。JSON-有一个字符串键。