如何使用数字键还原JSON对象

时间:2019-06-11 21:25:56

标签: javascript jquery json object reverse

我是JavaScript编程的新手,试图弄清楚如何反转单个JSON对象的键时,我头疼。这是我要反转的对象:

{70: "a",
276: "b ", 
277: "c ", 
688: "d", 
841: "e", 
842: "f", 
843: "g", 
1078: "h", 
1079: "i"} 

我正在本地主机上运行此代码。我正在使用Google chrome开发人员工具(F12)分析 console.logs 。我也可以在此脚本中使用Jquery

这是我到目前为止尝试过的:

//The object is stored in a variable called json
var json = 
{70: "a",
276: "b ", 
277: "c ", 
688: "d", 
841: "e", 
842: "f", 
843: "g", 
1078: "h", 
1079: "i"}; 

var entries = Object.entries(json);

entries.reverse();

var newjson = Object.fromEntries(entries);

console.log(newjson);

运行此代码时,输​​出与旧的json变量相同,但未更改。

这是预期的console.log()

{ 1079: "i",
  1078: "h", 
  843: "g", 
  842: "f",
  841: "e", 
  688: "d",  
  277: "c",
  276: "b",
  70: "a",
}

非常感谢任何试图帮助我的人。

3 个答案:

答案 0 :(得分:0)

请考虑未保留对象中元素的顺序。实际上,JavaScript对象是dictionary,其中,内部数据不是按顺序存储在数组中,例如使用数组,并且使用使用键作为输入的哈希函数访问值,并且-意义上,给出了结构内部值的“位置”。

字典是一种数据结构,它不使用JavaScript或任何其他编程语言,都不会保留排序(但是,它通过索引提供了快速的数据检索)。

我建议您使用数组保留顺序。

也许包含不同对象的数组可能是您的解决方案。 然后,您可以根据对象的键对数组进行排序。 这是一个“虚拟”示例:

var arr = [{1: "Test1"}, {2: "Test2"}]
arr.sort((obj1, obj2) => {
  return Object.keys(obj2)[0] - Object.keys(obj1)[0];
});

答案 1 :(得分:0)

我希望这会有所帮助。我什至不确定性能。只要您给我反馈,就可以随意投票。

假设您有const reversedKeys = Object.keys(json).reverse(); const reversedJson = reversedKeys.map(e => ({[e]: json[Number(e)]}) ); 变量:

python.exe import src 

答案 2 :(得分:0)

正如adam-lassek中的post中所述,JavaScript关联数组是无序的。 您必须编写自己的函数来像本yossi-neiman

中的post那样反转数组
相关问题