我是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 在这篇文章中所做的那样