我有包含多個對象的JavaScript對象,其中一個屬性是sortOrder。更新一個對象sortOrder時,更新所有值的最有效方法是什麼?通過對象的子值對對象進行排序和更新
父是一個包含對象的子對象,像這樣:
parent.children = Object{11: Object, 12: Object, 13: Object}
兒童對象是結構如下所示:
11: Object
sortOrder : "1"
12 : Object
sortOrder : "2"
13 : Object
sortOrder : "3"
所以,如果我說的更新對象13中將sortOrder 2那麼它看起來像這樣:
11 : Object
sortOrder : "1"
12 : Object
sortOrder : "2"
13 : Object
sortOrder : "2"
但我需要更新兄弟對象反映新增的sortorder,所以像這樣的:
11 : Object
sortOrder : "1"
12 : Object
sortOrder : "3"
13 : Object
sortOrder : "2"
或者相反,如果我更新的對象11中將sortOrder 3,那麼其他的孩子就需要重新排列,像這樣:
11: Object
sortOrder : "3"
Object 12 :
sortOrder : "1"
Object 13 :
sortOrder : "2"
有沒有你不保存孩子作爲數組的一個原因(即既有秩序的概念,並有一個排序方法的結構)? –
如果你想要有效的更新,你需要一個動態搜索樹結構來進行日誌操作,比如avl或者紅黑樹 – juvian
對象子的順序不能保證,所以排序它沒有多大意義。我會使用一個'Object.keys()'的數組,然後根據孩子的值對它進行排序,然後使用排序後的鍵以特定的順序對孩子進行操作。 – pawel