我是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",
}
非常感谢任何试图帮助我的人。
答案 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那样反转数组