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



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

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

我正在本地主机上运行此代码。我正在使用谷歌浏览器开发人员工具(F12(分析控制台日志。我也可以在此脚本中使用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",
}

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

我希望这有所帮助。我什至不确定性能。只要你给我反馈,请随时投票反对。

假设您有 json var:

const reversedKeys = Object.keys(json).reverse();
const reversedJson = reversedKeys.map(e => ({[e]: json[Number(e)]}) );

考虑对象中元素的顺序不会保留。在实践中,JavaScript 对象是一个字典,在内部,数据不是以顺序方式存储的,例如在数组中,而是使用哈希函数访问值,该哈希函数将键作为输入,并且在简化的意义上,给出结构内值的"位置"。

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

我建议你使用数组来保持秩序。

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

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

正如 adam-lassek 在这篇文章中所说,Javascript 关联数组是无序的。你必须编写自己的函数来反转你的数组,就像 yossi-neiman 在这篇文章中所做的那样

最新更新