javascript - JSON编码后将javascript对象键转换为真正的int

标签 javascript jquery

我有这个:

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/

相关文章:

javascript - knockout validation - 动态验证消息

javascript - 如何确保为客户端加载最新版本的 javascript 代码?

javascript - 获取 HTML 文档的宽度以随浏览器窗口调整大小

jquery - 如何使用 bootstrap 和 jQuery 通过单击表中的按钮来切换展开行

javascript - 在这个 JavaScript 函数中显示淡入效果?

javascript - 使用 jquery.form.wizard.min.js

javascript - 单选按钮和复选框。防止更改值属性

javascript - 按比例调整我在运行前无法访问的图像大小

javascript - 跨多个页面存储表格行选择

javascript - jQuery div 掉落效果onload