如何根据所需规则(而不是按名称或索引)对JSON进行重新排序



我有一个JSON,希望将其重新排序为一个新的JSON。

这就是我获取JSON:的方式

function getFormData($form){
var unindexed_array  = $form.serializeArray();
var indexed_array    = {};
$.map(unindexed_array, function(n, i){
indexed_array[n['name']] = n['value'];
});
return indexed_array;
}

假设结果如下(JSON.stringify(((:

var txt_JSON = {"username":"john","email":"john@doe.com","age":"29","created_date":"2020-10-28"}

我想按惯例重新订购。类似这样的东西:

var arr_order = [3,2,0,1];

根据重新排序规则,JSON应该变成这样:

var txt_JSON = {"created_date":"2020-10-28","age":"29","username":"john","email":"john@doe.com"}

这里的大多数示例都显示了按名称或值排序。非常感谢您的帮助。

您可以使用Object.entries将对象转换为键值对数组

然后.maparr_order返回对的预期顺序

并使用Object.fromEntries将配对转换回对象

var txt_JSON = {
username: "john",
email: "john@doe.com",
age: "29",
created_date: "2020-10-28",
}
var arr_order = [3, 2, 0, 1]
var txt_JSON_entries = Object.entries(txt_JSON)
var new_txt_JSON = Object.fromEntries(arr_order.map((i) => txt_JSON_entries[i]))
console.log(new_txt_JSON)

最新更新