我有这个:
var a = {};
a[1] = 1;
a[4] = 4;
console.log(JSON.stringify(a));
然后我得到:
{"1":1,"4":4}
但我想得到:
{1:1,4:4}
如何达到这个目标?换句话说,我希望键是真正的整数。
最佳答案
当您调用 JSON.stringify() 方法时,它会创建一个有效的 JSON 字符串。 有效 JSON 的规则之一是每个属性都应该用“引号”括起来。
这就是为什么使用 JSON.stringify 不可能得到你想要的结果。
如果您只想将此类对象转换为数组,这是可能的,例如使用此类函数。
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 中现有属性值的数组。
但是如果你的 prop 名称表示数组中的索引,并且你确定总会有数字作为 prop 名称 - 你可以改进这个函数:
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]
关于javascript - JSON编码后将javascript对象键转换为真正的int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38063977/