我以以下格式从服务器接收JSON对象:
obj = {
field1: "ONE",
field2: "TWO",
field3: [THREE1,THREE2,THREE3]
field4: "FOUR",
field5: [FIVE1,FIVE2,FIVE3]
};
即使我以顺序发送对象,底部的数组和对象顶部的字符串,但我没有以顺序的形式接收。有什么方法可以按以下格式对此进行排序。
obj = {
field1: "ONE",
field2: "TWO",
field4: "FOUR",
field3: [THREE1,THREE2,THREE3],
field5: [FIVE1,FIVE2,FIVE3]
};
目前,我正在使用以下方法及其工作,但可能有更好的方法。
obj = {
field1: "ONE",
field2: "TWO",
field3: [THREE1,THREE2,THREE3]
field4: "FOUR",
field5: [FIVE1,FIVE2,FIVE3]
};
var strObj = {};
var arrObj = {};
Object.keys(obj).forEach(function(key) {
console.table("Key : " + key + ", Value : " + obj[key]);
if (!(obj[key] instanceof Array)) {
strObj[key] = obj[key];
}
});
Object.keys(obj).forEach(function(key) {
console.table("Key : " + key + ", Value : " + obj[key]);
if (obj[key] instanceof Array) {
arrObj[key] = obj[key];
}
});
obj = { ...strObj, ...arrObj };
console.log(obj);`
您可以根据该值是否为数组来sort
对象的entries
。然后使用Object.fromEntries()
从排序的条目
const obj = {
field1: "ONE",
field2: "TWO",
field3: ["THREE1", "THREE2", "THREE3"],
field4: "FOUR",
field5: ["FIVE1", "FIVE2", "FIVE3"]
};
const sortedEntries = Object.entries(obj)
.sort((a, b) => Array.isArray(a[1]) - Array.isArray(b[1]));
const newObj = Object.fromEntries(sortedEntries)
console.log(newObj)