我試圖對一個物件進行排序
。
{"key4": {"name":"joe"},"key3": ["aaa", "bbb"], "key5": {"aaa":["name","joe"]}, "key1": "TypeString", "key2": 0}
to
{"key1": "TypeString", "key2": 0, "key3": ["aaa", "bbb"], "key4": {"name":"joe"},"key5": {"aaa":["name","joe"]}}
我的主要目標是根據值的型別而不是值本身來排序。即每個值的型別是字串,然后是int,然后是陣列,最后是object。
uj5u.com熱心網友回復:
當你列印一個物件時,鍵的順序取決于實作。如果你真的需要獲得插入順序的鍵,你可以使用Reflect.ownKeys()(詳見MDN):
const obj = {"key4": {"name":"joe"}, "key3": ["aaa", "bbb"],"key5": {"aaa": ["name","joe"]}, "key1": "TypeString"/span>, "key2"/span>: 0}。
const keys = Object.keys(obj)。
const keysSorted = keys. sort((key1, key2) => getTypeSortId(obj[key1]) - getTypeSortId(obj[key2]))。
const objSorted = keysSorted.reduce((o, key) => (o[key] = obj[key], o), {}) 。
console.log(objSorted)。
console.log(Reflect.ownKeys(objSorted) )。
function getTypeSortId(value) {
return (
typeof value === "string" ? 1 :
typeof value === "number" ? 2 :
value instanceof Array ? 3 。
typeof value === "object"/span> ? 4 。
5 ?
);
}
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/312765.html
標籤:
上一篇:將資料從一個庫中系結到XAML上
