The answer is simple, don’t have the other views resort objects in the array.
There’s no reason for Heaviest, Name, etc. to be persistent, everything but the default sort order should be visual only. Then it doesn’t matter what the default is called, Custom, No Sort, Uncle Bob, call it whatever you want. Any time someone opens a container (either personal inventory or shared storage) it defaults to the Default view, then they can temporarily use the visual sorts as much as they want without impacting the storage array at all.
Or, as an alternative, they could even allow the last view selected to be visually persistent but not affecting the actual sort order in the array or requiring extra memory for saving multiple sorts.
Step 1: A player opens a chest and they choose the “Heaviest” view. The game visually shows the items in Heaviest order but does not change the sort order in the array at all.
Step 2: The player exits the chest inventory. Nothing was changed in the storage order for the chest, so there is nothing to unchange, the items in the chest are still stored in the same order they were stored before the player opened the chest but the game remembers that the player’s last choice for sort view was Heaviest.
Step 3: The player opens a different chest, the game automatically displays the items in the new chest using the Heaviest view, because that was the last view the player chose for external storage boxes. Again, nothing is changed inside the array, but the player’s view choice is preserved when moving from box to box.
The game never has to store more than one copy of the array for any storage container, the only thing it has to do is “remember” what their last view was and use that same view when they open the next container.
Same thing with character inventory. There’s no reason to resort the array, there only needs to be one Default storage order in the array for the character’s inventory, and the game just “remembers” what their last view choice was.
This retains a default sort order in shared storage, and allows every player in the game to view storage using the view that they prefer, while at the same time preserving only one copy of the storage array for every container in the game. No extra memory or db storage is needed.
This maintains the game’s efficient use of the internal db and while maximizing individual player choice. That’s a win-win.